AmiSNESE.doc

(14 KB) Pobierz
 ----------------------------
* 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...
Zgłoś jeśli naruszono regulamin