SMSAdvance GBA

From GameBrew
SMSAdvance
Smsadvanceflu02.png
General
AuthorFluBBa (Fredrik Olsson)
TypeHandheld
Version2.5
LicenseMixed
Last Updated2009/01/26
Links
Download
Website
Source

SMSAdvance is a Game Gear/Master System/SG-1000 emulator developed for the Game Boy Advance. The source code is based on PocketNES.

The main program is a windows-injector, used to inject Master System ROMS into the provided .gba file.

Features

  • Most things you'd expect from an SMS emulator.
  • Except for:
    • Correct sprite collision and overflow.
    • Speech samples.
    • YM2413 emulation.
    • EEPROM save for the few GG games that use it.
    • Screen mode 3 (not really used).

Installation

Run SMSAdvance.exe to add roms to the emulator (check your rom).

Do no overwrite the original .gba file.

User guide

Menu

Controller:

  • Autofire - Select if you want autofire.
  • Controller - 2P control player 2, Link is used to linkup 2 GBAs.
  • Swap A/B - Swap which GBA button is mapped to which SMS/GG button.
  • Use R as Start - Map the GBA R button to the GG Start button.
  • Use Select as Reset - Map the GBA SELECT button to the SMS Reset button.

Display:

  • Display - Here you can select if you want scaled or unscaled screenmode.
    • Unscaled mode - L & R buttons scroll the screen up and down.
    • Scaled modes: Press L+SELECT to adjust the background.
  • Scaling - Here you can select if you want flicker or barebones lineskip.
  • Gamma - Lets you change the gamma ("brightness").
  • GG Border - Lets you change between black, bordercolor and none.
  • Lock toprows - For unscaled screenmode.
    • Some games use this automaticly, Double Dragon, OutRun etc.
    • But you can also choose to force it.
  • Perfect sprites - Uses a lot of cpu, only use when really necessary.
  • Disable background - Turn on/off background rendering.
  • Disable sprites - Turn on/off sprite rendering.

Other Settings:

  • VSync - Switch between speed modes, can also be toggled with L+START.
    • On - Will wait for the next vsync if needed, best for most games.
    • Force - Can help with graphics in some games, often slow.
    • Off - Can speed up some games if they don't allready use all cpu time.
    • Slowmo - Good for beating that extra fast game.
  • FPS_Meter - Toggle fps meter.
  • Autosleep - Change the autosleep time, also see Sleep.
  • EWRAM Speed - Use with caution!
  • Autoload state - Toggle Savestate autoloading. Automagicaly load the savestate associated with the selected game.
  • Fake spritecollision - Some games require this, Pit Fighter doesn't like it.
  • Region - Change the region of the SMS and video standard.
  • Use BIOS - If you have added a BIOS you can select if you want to use it.
  • Machine - Here you can select the hardware, Auto should work for most games.

Link Transfer:

  • Lets you transfer small games to other GBAs, also see the advanced topic.

Go Multiboot:

  • You can use the Go Multiboot feature to force the game to run in multiboot mode.
  • Useful if you want to boot someone else up and eject the cartridge.
  • Do not eject cartridges from a GameBoy Player as it will just reset.

Save Manager:

  • Quick savestate - Creates a savestate/overwrites the current if one exists (R+SELECT).
  • Quick loadstate - Load a savestate associated with the current game (R+START).
  • Savestate - Select if you want to overwrite an old state or create a new.
  • Loadstate - Select which state you want to load.
  • Save SRAM - Save the SRAM for the current game.
  • Manage savememory - Lets you erase SRAM (for now).

Others:

  • Sleep - Put the GBA into sleepmode (START+SELECT to wake up).
  • Restart - Select a new game.
  • Exit - Exit the emulator back to Pogo or the FA/F2A menu.

Note: Make sure your flashing software allocates 64kByte/512kbit SRAM for SMSAdvance.

Advanced

EWRAM speed:

  • This changes the waitstate on EWRAM between 2 and 1.
  • This can probably damage your GBA and definitly uses more power, around 10% speedgain. Use at your own risk.

Link transfer:

  • Send a SMS game to another GBA.
  • The other GBA must be in multiboot receive mode (no cartridge inserted, powered on and waiting with the "GAME BOY" logo displayed).
  • Only one game can be sent at a time, and only if it's small enough to send (approx. 128kB or less).
  • A game can only be sent to 1 (one) Gameboy at a time, disconnect all other gameboys during transfer.
  • Use an original Nintendo cable.

PogoShell:

  • Copy smsadvance.gba to the plugin folder (or compress it to mbz before you copy it), rename it to smsadvance.bin.
  • Then add either one of the following line to the pogo.cfg file:
    • sms 1 smsadvance.bin 2
    • sms 1 smsadvance.mbz 2

Controls

Up/Down - Select game

A/B - Start selected game

L+R - Menu

A - Choose

B or L+R - Cancel

Screenshots

smsadvanceflu3.pngsmsadvanceflu4.pngsmsadvanceflu5.png

Changelog

V2.5 2009/01/26

  • Added support for GG Bios from Pogoshell.
  • Added mapper support for new Korean games.
  • Changed interrupt method so more cards should be able to patch SMSA.

v2.4 2008/04/16

  • Fixed config loading for gamma setting.

V2.3 2008/03/28

  • Fixed games branching over banks with the new VRAM copy (Sonic 1).

V2.2 2008/03/27

  • Added copying of first 32kB ROM to VRAM for faster execution.
  • Added selection of machine.
  • Added correct noise generation for SG-1000 emulation.
  • Added correct palette in TMS9918 modes on SMS machines.
  • Added different vdp capabilities depending on selected machine.
  • Added some very basic Mode5 support when Machine=MegaDrive.
  • Added different io maps depending on selected machine.
  • Added support for the SMS1 tilemap address masking (Ys(J)).
  • Added support for turning on/off internal RAM.
  • Added auto save of SRAM (if it's allready present) when entering menu.
  • Added auto turn off of Bios when no header found (on machine=Auto).
  • Added auto region (Pop Breaker GG (J)).
  • Fixed support for Dodgeball King (KR).
  • Fixed pushing and poping of AF register (Adventure of Batman GG).
  • Fixed sprite bugs in unscaled mode on Codemasters games.
  • Fixed initializing of all CPU regs on reset.
  • Fixed timing of HALT instruction.
  • Fixed palette setting for TMS9918 modes on GG.
  • Fixed noscrolling for TMS9918 modes.
  • Fixed up Mode1 graphics a bit.
  • Fixed correct HCounter and latching.
  • Better switching between TMS9918 and SMS video modes.
  • More info shown from the game header.
  • Optimised tile rendering for mode 0 & 2 (for real this time).
  • Optimised all Z80 memory reads, one instruction and cycle shorter.
  • Optimised DAA opcode.
  • Optimised DEC opcodes.
  • Optimised SBC A/HL opcode.
  • Optimised one of the SRA opcodes.
  • Optimised CPI, CPD, CPIR & CPDR opcodes.

V2.1 2007/05/08

  • Optimised tile rendering for mode 0 & 2.
  • Fixed a bug where GG games set the "lock-toprow" bit (Sonic Drift demo).
  • Added support for the SG-1000 games Mahjong and Home Mahjong.
  • Added support for RAM on some SG-1000 games (The Castle, Othello...).
  • Fixed clearing of SMS VRAM when no bios used.

V2.0 2006/07/17

  • Added "Go Multiboot" menu option.
  • Added menu option for disabling background/sprites.
  • Fixed a bug in the screen on/off behaviour.
  • Fixed a bug in SRAM loading when using a BIOS.
  • Fixed default config.
  • Fixed Pause & Reset buttons when linking 2players.
  • Removed the save management menu when multibooting.
  • Optimised tiledecoding.
  • Optimised some of the SBC instructions.
  • Optimised EI instruction.
  • Optimised IO port access.

V1.9 2006/06/03

  • Added Savestates.
  • Added support for Ernie Els Golf.
  • Fixed Start/Select going through when using L/R + Start/Select.
  • Fixed gamma settings acting directly.
  • Fixed Codemaster mapper a bit, now works with BIOS.
  • Fixed header detection, all GG games that use SMS mode now uses the GG BIOS.
  • Updated the readme a bit.

V1.5 2006/05/13

  • Fixed volume attenuation.
  • Fixed soundclicks in rom selection menu.
  • Fixed a bug with the new sprite collision.
  • Fixed some bugs with the sprites in Mode 0 & 2.
  • Fixed a rare background bug in Mode 0, 1 & 2.
  • Fixed cpu timing for both PAL & NTSC (confirmed on real HW).
  • Better update timing in PAL mode.
  • More colorful SG-1000 palette.
  • Optimised BIT7 instructions.
  • Optimised some of the shift instructions.
  • Optimised DD/FD instructions.

V1.4 2006/01/17 Added fake support for sprite collision (option).

V1.3 2006/01/15

  • Added support for running the GG bios in SMS mode.
  • Added support for all SMS Bioses.
  • Added option in builder for "empty" slot at the end of ROMlist. (Loopy).
  • Added option to lock the 2 toprows in unscaled mode.
  • Added "Perfect Sprite" option for games like:
    • Global Gladiators.
    • GP Rider (GG).
    • Speedball 2.
    • Xenon 2.
  • Added emulation of locking the right side of the screen, games:
    • Gauntlet.
    • Golvellius.
    • Griffin (GG).
    • Line of Fire.
    • Megumi Rescue.
    • Rygar.
    • Satelite 7.
  • Fixed IO port 2, Laser Ghost.
  • Fixed Monaco GP, SG-1000.
  • Fixed the support for Jang Pung II (KR).
  • Fixed priority on zoomed sprites in mode 0 & 2 (Bank Panic, SG-1000).

V1.2 2005/11/30

  • Added support for graphics mode 0 & 2 (F-16 Fighter, SG-1000 games).
  • Now saves the whole (32kB) SMS SRAM.

V1.1 2005/11/03

  • Added sprite following (somewhat).
  • Fixed background color (lots of games).
  • Fixed Game Over screen on Rambo III.
  • Fixed sprite bugs on Codemasters game in scaled mode.
  • Optimised CPU abit, again.

V1.0 2005/10/14

  • Fixed Codemasters mapper (broken in V0.9).
  • Cleaned up the mapper code a bit.

V0.9 2005/09/26

  • Added support for the GG BIOS.
  • Added config for using Select as Reset button.
  • Fixed Shanghai 2.
  • Fixed Ryu Kyu.
  • Fixed Space Gun.
  • Fixed a bug in joypad reading (Street Fighter II).
  • Optimised mapper detection.
  • Optimised sound mixer.
  • Optimised CPU abit.

V0.8 2005/09/03

  • Added support for Street Fighter II.
  • Added config for using R as Start.
  • Fixed Pause in Robocop 3.
  • Fixed some scrolling glitches (Gunstar Heroes intro, Rygar).

V0.7 2005/08/18

  • Reduced sprite flicker in Arch Rivals.
  • Fixed Rise of the Robots (HBlank IRQ enabled at start).

V0.6 2005/08/15

  • Fixed Gunstar Heroes (bug in V0.5).

V0.5 2005/08/13

  • Added Codemasters & Korean mappers.
  • Added 32k SRAM support for Shining Force 2 & 3 (not saved yet).
  • Fixed a memory management bug again (Shinobi in some cases).
  • Fixed a rendering bug in 224 mode (Codemasters games).

V0.4 2005/08/10

  • Fixed memory management again (Shinobi, The Ninja, SDI).
  • Fixed a rendering bug in GG mode (GG Aleste).
  • Fixed sprite offset -8 (Ghouls'n Ghosts).

V0.3 2005/08/07

  • Fixed nametable switching a bit (Sylvan Tale, Road Rash).
  • Fixed 256x224 screen for GG games (Star Trek games).
  • Fixed memory management a bit (Ys, Terminator).

V0.2 2005/08/02

  • Fixed sprites in Golvelius.
  • Fixed hanging in StarGate.

V0.1 2005/07/30

  • Initial release.

V0.0 2005/07/06

  • Started Coding.

Credits

Huge thanks to Loopy for the incredible PocketNES and the builder.

Thanks to:

  • Dwedit for maintaining the GBAMP version of SMSAdvance.
  • Reesy for help with the Z80 emu core.
  • Some MAME people + Maxim for the SN76496 info.
  • Charles MacDonald (http://cgfm2.emuviews.com/) for VDP info.
  • Omar Cornut (http://www.smspower.org/) for help with various SMS stuff.
  • Vinpire for the splashscreen.
  • The crew at PocketHeaven for their support.

External links

Advertising: