---------------------------- * Amiga SuperNES BETA v0.13b * ---------------------------- Amiga SuperNES Emulator (AmiSNESE) is Copyright © 1997-1998 Jesper Svennevid. Distribution of AmiSNESE and documentation must be in it's unmodified form. Introduction ------------ Haven't you always wanted to play the 'classics' on SuperNES on your own Amiga? I have, and that's why I'm developing this emulator. It all started in August 1997 when I logged on into IRC, a few hours after I just had finished my 6502-emulator, that I didn't know what to do with. :) On IRC, I bumped into one of the authors of A/NES(Morgan Johansson), and when I asked him about what a 6502-emulator could have use for, he asked me why I didn't write a SuperNES-emulator, as the Amiga was lacking a good one. The more I thought of it, I liked the idea. I abandoned my 6502-emulator, and he gave me a link to a page with ton's of documentation for the SuperNES, and a few days later I had a GUI and a small CPU-emulator, emulating a few instructions. It was VERY buggy and slow, but it convinced me that this was something I could spend my time with. A few weeks later, I got my first graphics on the screen, a bit screwed up, but I didn't actually complain. I would have screamed out if it hadn't been in the middle of the night. :) Disclaimer ---------- The author cannot be held liable for the suitability or accuracy of this manual and/or the program(s) it describes. Any damage directly or indirectly caused by the use or misuse of this manual and/or the program it describes is the sole responsibility of the user her/him self. TODO ---- Top priority is currently to rewrite DMA. The current DMA-code is exactly the same that was written for v0.01, and it doesn't support more than CPU -> VRAM and CPU -> CGRAM copy :) - Fix some badly emulated instructions, that forbid the emulator to run rom's that wanna jump far into the rom. - Rewrite keyboard routines. - Write 4 different code-jumptables, handling all emulation-modes of the CPU. This will result in a 10 cycle gain per 65816-instruction. - Add true gfx-board support. (using native routines) - Optimize addressing-modes. - Much faster graphic-rendering. (without removing gfx-board support) - HDMA(Horizontal DMA). - Rewrite DMA completly. - Add bitwise hardware-scrolling. - Add support for screens larger than display-area. - Implement tile X/Y flipping. - Get those OAM/OBJ's running. (I'm so lazy :) - Implement more graphic-modes. (Like mode 7 and so. :) - Find out why some roms SHOULD be able to display graphics, but won't. History ------- v0.13b: Minor update - Screen rendering rewritten again. Full hardware-scrolling now implemented. - BG-enabling is now a bit more simplified. You know only change a bitmask that affects the screenmodes, so you can no longer enable BG's that aren't meant to be enabled, but instead BG's that you have disabled won't ever be enabled without you doing so. - All screen-sizes implemented. (32x32, 32x64, 64x32, 64x64) - 16bit multiplication / division implemented. - Mode 0 calculated the wrong tile-offset. Fixed. Now most displays aren't trashed anymore. - DMA channel 1-7 added. Had completly forgot to add those. :) - MORE SBC bugs fixed. Forgot to flip carry. This have solved ALL problems concerning trashy displays. - Added a switch for disabling the RDNMI-trapper. - Rather compatible APU-skipper added. Should cope with most SPC-troubles. - Fixed some hardware troubles involving word-reads from certain hardware-addresses, where the low-read was cleared and only accessed a faulty register. v0.12b: Minor update - All memory-accesses rewritten to match the new memory-map. SOME speed-increase, but it's mostly a bugfix. Support for HighRAM and expanded ram not yet added. - NMI/VBL now executes correctly. Currently it's incompatible with code that tries to access the contents of the stack, as it's not actually writing anything to memory. - Graphics engine now line-based, to allow certain effects that a tile-based renderer was forbidding. - VBL-wait detector added, trapping when the RDNMI has been accessed too many times. If it has, it will let the VBL occur prematurely, to prepare for next frame. Most demos run like a dream right now. :) - GUI redesigned! I just LOVE the new status-window. It adds many possibilities. :) - SBC #immed bugfixed. Actually did a memread instead of a argument-read. - Mosaic semi-implemented. (Screen pixelation, read more at ROM-list) v0.11b: Minor update - Fixed CPU bug. One VERY important opcode was by mistake disabled, causing all rom's to fail. v0.10b: Major update - Mode 0 & 1 implemented at last to a grade that's useful. - All 4 BG's implemented, controllable thru keyboard. The layers are perfectly masked thru each other. - Implemented tile palette-remapping. - 1 pass removed completly from the screen-rendering, resulting in a nice speed-up. Should not affect appearance of graphics. - Screen is not updated if no changes are made in VRAM or in any hwreg that affects the screen. - Rescaled the CPU-speed cfg-item, now 100 different speed-modes selectable(From 536 cycles per VBL up to 53600). ROM's that wait alot at the VBL will have a massive speed-up. - Entire CPU-emulation REWRITTEN. All opcodes are now macro-based. This gives smaller source-code and better debugging-possibilites. - The emulator is now FREEWARE. Source-code will be available when the emulator gets good enough. - CPU innerloop overhead decreased, and jsr is now replaced with jmp, removing several cycles per instruction. - 20% more speed compared to 0.03b, thanks to the rewrite! - Public memory allocations pooled. - Joypad 1 now emulated. (See key-definitions) - Register PB now emulated correctly. Was before never stored, so long jumps could not be done. - Added check for CPU, so that 000/010 machines wont crash if running the program. v0.03b: (Never released) - One more rom able to display readable graphics. - 120 opcodes now emulated. - 25% speed gain thanks to optimized opcode fetching. (now caching args) - Changed to version numbers instead. (Some ppl thought BETA 2 was 0.20 :) - Icons enhanced to MagicWB look by Tomas Amsrud. (Thanks!) - Screenmode requester added to permit different modes w/o promoting. - Fixed library closing bug. (No libraries were actually closed on exit) - Files are now unlocked in a more compatible manner. - Fixed screenblanking when display is disabled. v0.02b: Minor update - Now supports any size on roms. (Only limited by the memory available) - Rendering-routines now display graphics on GFX-boards. (CGFX tested OK) - Removed the exclusive flag on the emulation screen. - Added user-control over frame skip and emulation speed. - Screen is now double-buffered to avoid flickering. - SNES PAL/NTSC modes emulated correctly. - Fixed bug in CPU, permitting 1 new rom to display it's graphics. - Starting to implement several BG's. - Mode 0 semi-implemented. - Configuration saved on exit. Last accessed path saved in configuration. - Builtin debugging system semi-implemented. - Graphics are now rendered in fastmem and then copied to chipmem. This gives great improvements when fastmem is available. Chip-only users will not lose speed on this, as within the copy, the BG-merge occurs. - DMA and hardware for OAM added. - VRAM accessing errors fixed. v0.01b: - Initial release Requirements ------------ Processor: MC68020+ OS Version: 3.x Graphics: AGA or GFX-board Memory: 700kB memory MINIMUM (FASTMEM is HIGHLY recommended!) This program uses reqtools.library (© 1991-1994 Nico François, 1995 Magnus Homgren) for the filerequesters. The GUI was designed using GadToolsBox 37.300 (© 1991-1993 Jaba Developement) Usage ----- Should be self-explaining thanks to the very simple GUI. You now exit the emulation by pressing Escape, not by RMB as before. The emulation-requester has now been simplified, so that errors can be more easily understood. Key assignments --------------- Esc - Interrupt emulation BG Control: 1 - Turn On/Off BG 1 2 - Turn On/Off BG 2 3 - Turn On/Off BG 3 4 - Turn On/Off BG 4 Joypad 1: Arrow Up - Up Arrow Down - Down Arrow Left - Left Arrow Right - Right Start - Left Shift Select - Left Alt A - A Z - B S - X X - Y D - TL (Top Left) C - TR (Top Right) Working ROM's ------------- rom name what works? Sonic.smc - Picture & fade. Press 'Start' to se pixelation effect. Intro-2.smc - Picture & fade (no sprites yet) Unknown.smc - 3 layer picture. No updating of text on screen. taurus.smc - Logo, some text and a scroller. Pixelation and fade. s-snake.smc - Some text. '1'/'2' keys flip up a smiley. (Thanks to Simon N Goodwin for tipping me off!) Don't complain if the rom's doesn't behave like they should be, I'm working on it. :) Many more to come! I've come to a point where the rom's will start working. :) Main Menu --------- Open ROM - Opens a file-requester and after that loads and tries to identify the ROM header. The ROM is NOT loaded into memory at this point. Start Emulator - Loads the ROM into memory and tries to execute it. If you get a emulator-error right after clicking, you might be too low on memory. ROM Info - Opens a small window with some information about the selected ROM image. Preferences - Opens program preferences. About - A small about requester. Quit - Now WHAT coul...
Alek_NGI