15eb0001 |
1 | \r |
2 | ----------------------------------------------------------------------------\r |
3 | \r |
4 | PicoDrive\r |
5 | \r |
6 | Megadrive emulator for Pocket PC\r |
7 | \r |
8 | This code is licensed under the GNU General Public License version 2.0 and the MAME License.\r |
9 | You can choose the license that has the most advantages for you.\r |
10 | \r |
11 | ----------------------------------------------------------------------------\r |
12 | \r |
13 | What's new?\r |
14 | \r |
15 | 0.030\r |
16 | Cyclone v0.076, fixes:\r |
17 | + Fixed an issue with sbcd - e.g. when 0x00-0x01 was performed, the result was correct (0x99),\r |
18 | but the carry bit was not set. Also changed abcd code to be more similar to new sbcd.\r |
19 | Used on RT2.\r |
20 | + Fixed a subtle issue in btst #n,(An), if the target is less that 32-bit, the value is\r |
21 | now masked.\r |
22 | Rolling Thunder 2 did this, but it doesn't seem to have fixed/broken anything.\r |
23 | + Oops #2! Cmpa was writing back the value to the destination register! Fixes: don't know.\r |
24 | + Oops #3! The CCR should be writable from any mode, previously it was only allowed from the\r |
25 | supervisor mode. Fixes Gain Ground.\r |
26 | + Added cmpm (Flicky, Decap Attack)\r |
27 | + For movem, added some EA modes (like 0x3a PC relative) which I thought were invalid, but\r |
28 | Flicky uses movem to PC relative...\r |
29 | + Oops, incorrect eor opcodes were being emitted instead of cmpm opcodes\r |
30 | * Trying a different way of doing addx/subx with carry (to fix zero flag?)\r |
31 | \r |
32 | 0.025\r |
33 | + Doh, fixed a dumb divide by zero in the (w.i.p.) sound code - Sonic 1, Revenge of Shinobi\r |
34 | work again!\r |
35 | \r |
36 | 0.024\r |
37 | Cyclone v0.072:\r |
38 | + Fixed a problem with divs - remainder should be negative when result is negative\r |
39 | Fixed intro of Block Out.\r |
40 | \r |
41 | + Fixed a typo in SekInterrupt\r |
42 | \r |
43 | + Added a config file PicoConfig.txt with key codes, in the root directory\r |
44 | of the Pocket PC. If you want you can edit this to remap keys. I'll add\r |
45 | an easier way to redefine keys later.\r |
46 | - Revenge of Shinobi strangely seems broken?\r |
47 | \r |
48 | 0.022\r |
49 | Cyclone changes:\r |
50 | + Added movep opcode (Sonic 3 works)\r |
51 | + Fixed a problem with DBcc not decrementing if the condition is false (Shadow of the Beast)\r |
52 | \r |
53 | 0.018\r |
54 | Cyclone changes:\r |
55 | + Added SBCD and the flags for ABCD/SBCD. Score and time now works in games such as\r |
56 | Rolling Thunder 2, Ghouls 'N Ghosts\r |
57 | + Fixed a problem with addx and subx with 8-bit and 16-bit values.\r |
58 | Ghouls 'N' Ghosts now works!\r |
59 | + Alien 3 now works\r |
60 | + Added ABCD opcode (Streets of Rage works now!)\r |
61 | \r |
62 | 0.017 Added Window (score display)\r |
63 | \r |
64 | 0.016\r |
65 | + Added some Z80 faking which makes a few more games run\r |
66 | + Sped up graphics rendering a bit\r |
67 | + Fixed Sprite priority\r |
68 | \r |
69 | Cyclone Fixes\r |
70 | + Added dbCC (After Burner)\r |
71 | + Added asr EA (Sonic 1 Boss/Labyrinth Zone)\r |
72 | + Added andi/ori/eori ccr (Altered Beast)\r |
73 | + Added trap (After Burner)\r |
74 | + Added special case for move.b (a7)+ and -(a7), stepping by 2\r |
75 | After Burner is playable! Eternal Champions shows more\r |
76 | + Fixed lsr.b/w zero flag (Ghostbusters)\r |
77 | Rolling Thunder 2 first level only now works\r |
78 | + Fixed N flag for .b and .w arithmetic. Golden Axe works!\r |
79 | \r |
80 | \r |
81 | v0.011\r |
82 | Changes are to the Cyclone core, repeated here:\r |
83 | ----\r |
84 | v0.0065\r |
85 | + Fixed a problem with immediate values - they weren't being shifted up correctly for some\r |
86 | opcodes. Spiderman works, After Burner shows a bit of graphics.\r |
87 | + Fixed a problem with EA:"110nnn" extension word. 32-bit offsets were being decoded as 8-bit\r |
88 | offsets by mistake. Castlevania Bloodlines seems fine now.\r |
89 | + Added exg opcode\r |
90 | + Fixed asr opcode (Sonic jumping left is fixed)\r |
91 | + Fixed a problem with the carry bit in rol.b (Marble Madness)\r |
92 | \r |
93 | v0.0064\r |
94 | + Added rtr\r |
95 | + Fixed addq/subq.l (all An opcodes are 32-bit) (Road Rash)\r |
96 | + Fixed various little timings\r |
97 | \r |
98 | v0.0063\r |
99 | + Added link/unlk opcodes\r |
100 | + Fixed various little timings\r |
101 | + Fixed a problem with dbCC opcode being emitted at set opcodes\r |
102 | + Improved long register access, the EA fetch now does ldr r0,[r7,r0,lsl #2] whenever\r |
103 | possible, saving 1 or 2 cycles on many opcodes, which should give a nice speed up.\r |
104 | + May have fixed N flag on ext opcode?\r |
105 | + Added dasm for link opcode.\r |
106 | \r |
107 | v0.0062\r |
108 | * I was a bit too keen with the Arithmetic opcodes! Some of them should have been abcd,\r |
109 | exg and addx. Removed the incorrect opcodes, pending re-adding them as abcd, exg and addx.\r |
110 | + Changed unknown opcodes to act as nops.\r |
111 | Not very technical, but fun - a few more games show more graphics ;)\r |
112 | \r |
113 | v0.0060\r |
114 | + Fixed divu (EA intro)\r |
115 | + Added sf (set false) opcode - SOR2\r |
116 | * Todo: pea/link/unlk opcodes\r |
117 | ----\r |
118 | v0.010\r |
119 | \r |
120 | + Cyclone v0.0059: Added remainder to divide opcodes.\r |
121 | Background is now fixed on Eswat and Revenge of Shinobi. In fact they are playable!\r |
122 | \r |
123 | * Shrunk the screen down because some games aren't playable if you can't see the whole\r |
124 | 320 pixel width.\r |
125 | \r |
126 | * Merged the PicoDrive and GenaDrive 'Pico' directories, with ifdefs for EMU_C68K (Cyclone)\r |
127 | and EMU_A68K.\r |
128 | \r |
129 | + While making GenaDrive I noticed a few bugs in the memory handlers and carried them\r |
130 | over to PicoDrive.\r |
131 | A lot of games (Revenge of Shinobi, Eswat, Sonic 1 maybe even) were reading\r |
132 | from memory locations like 0xff000000+Rom address, and I wasn't returning the Rom data.\r |
133 | Many more games show graphics now (G'n'G, Sonic 1)!\r |
134 | \r |
135 | * Cyclone: Changed the way Cyclone reads memory to be a bit less confusing.\r |
136 | The read/write memory handlers are now like this:\r |
137 | \r |
138 | unsigned char (*read8 )(unsigned int a); // [r7,#0x68]\r |
139 | unsigned short (*read16 )(unsigned int a); // [r7,#0x6c]\r |
140 | unsigned int (*read32 )(unsigned int a); // [r7,#0x70]\r |
141 | void (*write8 )(unsigned int a,unsigned char d); // [r7,#0x74]\r |
142 | void (*write16)(unsigned int a,unsigned short d); // [r7,#0x78]\r |
143 | void (*write32)(unsigned int a,unsigned int d); // [r7,#0x7c]\r |
144 | \r |
145 | This means the Cyclone itself now sign-extends 16 and 8-bit values when needed, and\r |
146 | the application doesn't have to.\r |
147 | \r |
148 | \r |
149 | v0.007 - Initial release\r |
150 | \r |
151 | Haven't been working on this much recently so I thought I'd release what\r |
152 | I had onto the Internet.\r |
153 | \r |
154 | Basically this is largely a framework for Cyclone, my 68000 core, and the\r |
155 | simplest system has to be the Megadrive, which is just really a 68000 with\r |
156 | flat address space wired up to a video display processor.\r |
157 | The Megadrive does of course have a Z80 for sound as well, but many games\r |
158 | will still run without it. Basically it's one of the most forgiving systems,\r |
159 | so it's probably a good starting point.\r |
160 | \r |
161 | Not many games run, and none of them are playable yet, but if you really want\r |
162 | to take a look anyway, here's what to do:\r |
163 | \r |
164 | -------------------------------------------------------------------------------\r |
165 | \r |
166 | How to run PicoDrive\r |
167 | \r |
168 | First connect your Pocket PC and copy PicoDrive.exe to it. Windows\Start Menu is \r |
169 | probably the best place for easy access.\r |
170 | It needs to have GAPI installed, which you may have already. If you don't it\r |
171 | will give you a really unhelpful error message (good old Windows!) like "Unable to execute\r |
172 | program".\r |
173 | To install GAPI just drop gx.dll into either the same folder as PicoDrive, or\r |
174 | your Windows folder.\r |
175 | Rom images go in the My Documents folder, and they must be in .BIN format, uncompressed.\r |
176 | \r |
177 | From memory, some games which do something are: Revenge of Shinobi, Sonic 2,\r |
178 | Ghouls 'N' Ghosts and CastleVania Bloodlines. Most just show a big blank screen :(\r |
179 | \r |
180 | If you find any games that are playable (maybe a PD game?), let me know, I'd be interested ;)\r |
181 | My e-mail is dev(at)finalburn.com - replace the (at) with an @\r |
182 | \r |
183 | I think there must be something wrong somewhere with one of the ASL-type instructions\r |
184 | or something - there are still a few unimplemented opcodes, and also I don't think I did\r |
185 | the remainder from DIVS and DIVU yet.\r |
186 | \r |
187 | Dave.\r |
188 | emudave(atsymbol)gmail.com\r |
189 | \r |