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