Added 0.030 of PicoDrive and moved license files into root
[cyclone68000.git] / PicoDrive / PicoDrive.txt
diff --git a/PicoDrive/PicoDrive.txt b/PicoDrive/PicoDrive.txt
new file mode 100644 (file)
index 0000000..1838ab2
--- /dev/null
@@ -0,0 +1,189 @@
+\r
+----------------------------------------------------------------------------\r
+\r
+                                PicoDrive\r
+\r
+                    Megadrive emulator for Pocket PC\r
+\r
+This code is licensed under the GNU General Public License version 2.0 and the MAME License.\r
+You can choose the license that has the most advantages for you.\r
+\r
+----------------------------------------------------------------------------\r
+\r
+  What's new?\r
+\r
+0.030\r
+  Cyclone v0.076, fixes:\r
+  + Fixed an issue with sbcd - e.g. when 0x00-0x01 was performed, the result was correct (0x99),\r
+  but the carry bit was not set. Also changed abcd code to be more similar to new sbcd.\r
+  Used on RT2.\r
+  + Fixed a subtle issue in btst #n,(An), if the target is less that 32-bit, the value is\r
+  now masked.\r
+  Rolling Thunder 2 did this, but it doesn't seem to have fixed/broken anything.\r
+  + Oops #2! Cmpa was writing back the value to the destination register! Fixes: don't know.\r
+  + Oops #3! The CCR should be writable from any mode, previously it was only allowed from the\r
+    supervisor mode. Fixes Gain Ground.\r
+  + Added cmpm (Flicky, Decap Attack)\r
+  + For movem, added some EA modes (like 0x3a PC relative) which I thought were invalid, but\r
+    Flicky uses movem to PC relative...\r
+  + Oops, incorrect eor opcodes were being emitted instead of cmpm opcodes\r
+  * Trying a different way of doing addx/subx with carry (to fix zero flag?)\r
+\r
+0.025\r
+  + Doh, fixed a dumb divide by zero in the (w.i.p.) sound code - Sonic 1, Revenge of Shinobi\r
+    work again!\r
+\r
+0.024\r
+  Cyclone v0.072:\r
+  + Fixed a problem with divs - remainder should be negative when result is negative\r
+    Fixed intro of Block Out.\r
+  \r
+  + Fixed a typo in SekInterrupt\r
+\r
+  + Added a config file PicoConfig.txt with key codes, in the root directory\r
+    of the Pocket PC. If you want you can edit this to remap keys. I'll add\r
+    an easier way to redefine keys later.\r
+  - Revenge of Shinobi strangely seems broken?\r
+\r
+0.022\r
+  Cyclone changes:\r
+  + Added movep opcode (Sonic 3 works)\r
+  + Fixed a problem with DBcc not decrementing if the condition is false (Shadow of the Beast)\r
+\r
+0.018\r
+  Cyclone changes:\r
+    + Added SBCD and the flags for ABCD/SBCD. Score and time now works in games such as\r
+      Rolling Thunder 2, Ghouls 'N Ghosts\r
+    + Fixed a problem with addx and subx with 8-bit and 16-bit values.\r
+      Ghouls 'N' Ghosts now works!\r
+    + Alien 3 now works\r
+    + Added ABCD opcode (Streets of Rage works now!)\r
+\r
+0.017 Added Window (score display)\r
+\r
+0.016\r
+  + Added some Z80 faking which makes a few more games run\r
+  + Sped up graphics rendering a bit\r
+  + Fixed Sprite priority\r
+\r
+Cyclone Fixes\r
+  + Added dbCC (After Burner)\r
+  + Added asr EA (Sonic 1 Boss/Labyrinth Zone)\r
+  + Added andi/ori/eori ccr (Altered Beast)\r
+  + Added trap (After Burner)\r
+  + Added special case for move.b (a7)+ and -(a7), stepping by 2\r
+    After Burner is playable! Eternal Champions shows more\r
+  + Fixed lsr.b/w zero flag (Ghostbusters)\r
+    Rolling Thunder 2 first level only now works\r
+  + Fixed N flag for .b and .w arithmetic. Golden Axe works!\r
+\r
+\r
+v0.011\r
+Changes are to the Cyclone core, repeated here:\r
+----\r
+v0.0065\r
+  + Fixed a problem with immediate values - they weren't being shifted up correctly for some\r
+    opcodes. Spiderman works, After Burner shows a bit of graphics.\r
+  + Fixed a problem with EA:"110nnn" extension word. 32-bit offsets were being decoded as 8-bit\r
+    offsets by mistake. Castlevania Bloodlines seems fine now.\r
+  + Added exg opcode\r
+  + Fixed asr opcode (Sonic jumping left is fixed)\r
+  + Fixed a problem with the carry bit in rol.b (Marble Madness)\r
+\r
+v0.0064\r
+  + Added rtr\r
+  + Fixed addq/subq.l (all An opcodes are 32-bit) (Road Rash)\r
+  + Fixed various little timings\r
+\r
+v0.0063\r
+  + Added link/unlk opcodes\r
+  + Fixed various little timings\r
+  + Fixed a problem with dbCC opcode being emitted at set opcodes\r
+  + Improved long register access, the EA fetch now does ldr r0,[r7,r0,lsl #2] whenever\r
+     possible, saving 1 or 2 cycles on many opcodes, which should give a nice speed up.\r
+  + May have fixed N flag on ext opcode?\r
+  + Added dasm for link opcode.\r
+\r
+v0.0062\r
+  * I was a bit too keen with the Arithmetic opcodes! Some of them should have been abcd,\r
+    exg and addx. Removed the incorrect opcodes, pending re-adding them as abcd, exg and addx.\r
+  + Changed unknown opcodes to act as nops.\r
+    Not very technical, but fun - a few more games show more graphics ;)\r
+\r
+v0.0060\r
+  + Fixed divu (EA intro)\r
+  + Added sf (set false) opcode - SOR2\r
+  * Todo: pea/link/unlk opcodes\r
+----\r
+v0.010\r
+\r
++ Cyclone v0.0059: Added remainder to divide opcodes.\r
+  Background is now fixed on Eswat and Revenge of Shinobi. In fact they are playable!\r
+\r
+* Shrunk the screen down because some games aren't playable if you can't see the whole\r
+  320 pixel width.\r
+\r
+* Merged the PicoDrive and GenaDrive 'Pico' directories, with ifdefs for EMU_C68K (Cyclone)\r
+  and EMU_A68K.\r
+\r
++ While making GenaDrive I noticed a few bugs in the memory handlers and carried them\r
+  over to PicoDrive.\r
+  A lot of games (Revenge of Shinobi, Eswat, Sonic 1 maybe even) were reading\r
+  from memory locations like 0xff000000+Rom address, and I wasn't returning the Rom data.\r
+  Many more games show graphics now (G'n'G, Sonic 1)!\r
+\r
+* Cyclone: Changed the way Cyclone reads memory to be a bit less confusing.\r
+  The read/write memory handlers are now like this:\r
+\r
+  unsigned char  (*read8  )(unsigned int a);  // [r7,#0x68]\r
+  unsigned short (*read16 )(unsigned int a);  // [r7,#0x6c]\r
+  unsigned int   (*read32 )(unsigned int a);  // [r7,#0x70]\r
+  void (*write8 )(unsigned int a,unsigned char  d); // [r7,#0x74]\r
+  void (*write16)(unsigned int a,unsigned short d); // [r7,#0x78]\r
+  void (*write32)(unsigned int a,unsigned int   d); // [r7,#0x7c]\r
+\r
+  This means the Cyclone itself now sign-extends 16 and 8-bit values when needed, and\r
+  the application doesn't have to.\r
+\r
+\r
+v0.007 - Initial release\r
+\r
+  Haven't been working on this much recently so I thought I'd release what\r
+  I had onto the Internet.\r
+\r
+  Basically this is largely a framework for Cyclone, my 68000 core, and the\r
+  simplest system has to be the Megadrive, which is just really a 68000 with\r
+  flat address space wired up to a video display processor.\r
+  The Megadrive does of course have a Z80 for sound as well, but many games\r
+  will still run without it. Basically it's one of the most forgiving systems,\r
+  so it's probably a good starting point.\r
+\r
+  Not many games run, and none of them are playable yet, but if you really want\r
+  to take a look anyway, here's what to do:\r
+\r
+-------------------------------------------------------------------------------\r
+\r
+How to run PicoDrive\r
+\r
+  First connect your Pocket PC and copy PicoDrive.exe to it. Windows\Start Menu is \r
+  probably the best place for easy access.\r
+  It needs to have GAPI installed, which you may have already. If you don't it\r
+  will give you a really unhelpful error message (good old Windows!) like "Unable to execute\r
+  program".\r
+  To install GAPI just drop gx.dll into either the same folder as PicoDrive, or\r
+  your Windows folder.\r
+  Rom images go in the My Documents folder, and they must be in .BIN format, uncompressed.\r
+\r
+  From memory, some games which do something are: Revenge of Shinobi, Sonic 2,\r
+  Ghouls 'N' Ghosts and CastleVania Bloodlines. Most just show a big blank screen :(\r
+  \r
+  If you find any games that are playable (maybe a PD game?), let me know, I'd be interested ;)\r
+  My e-mail is dev(at)finalburn.com - replace the (at) with an @\r
+  \r
+  I think there must be something wrong somewhere with one of the ASL-type instructions\r
+  or something - there are still a few unimplemented opcodes, and also I don't think I did\r
+  the remainder from DIVS and DIVU yet.\r
+\r
+  Dave.\r
+  emudave(atsymbol)gmail.com\r
+\r