| 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 |