Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

TempGBA: Difference between revisions

From GameBrew
(Created page with "{{Infobox DS Homebrews |title=TempGBA |image=tempgba.png |description=Game Boy Advance emulator based on gpSP 0.9, Unofficial gpSP Kai 3.3 by Takka, and NDSGBA 1.21. |author=Nebuleon, el al |lastupdated=2015/02/21 |type=Handheld |version=1.45 |license=GPL-2.0 |download=https://dlhb.gamebrew.org/dshomebrew/tempgba.7z 1.45 + TempGBA-mod |website=https://gbatemp.net/threads/tempgba-ndsgba-revival.343210/page-55#post-4774519 |source=https://github.com/Nebuleon/TempGBA }} Thi...")
 
No edit summary
Line 6: Line 6:
|lastupdated=2015/02/21
|lastupdated=2015/02/21
|type=Handheld
|type=Handheld
|version=1.45
|version=1.45 + mod
|license=GPL-2.0
|license=GPL-2.0
|download=https://dlhb.gamebrew.org/dshomebrew/tempgba.7z 1.45 + TempGBA-mod
|download=https://dlhb.gamebrew.org/dshomebrew/tempgba.7z 1.45 + TempGBA-mod

Revision as of 13:46, 30 May 2024

TempGBA
Tempgba.png
General
AuthorNebuleon, el al
TypeHandheld
Version1.45 + mod
LicenseGPL-2.0
Last Updated2015/02/21
Links
1.45 + TempGBA-mod Download
Website
Source

This is a GBA emulator for the SuperCard DSTwo on the Nintendo DS. It is issued from NDSGBA 1.21 by the Supercard Team, itself issued from Unofficial gpSP Kai 3.3 by Takka, itself issued from gpSP 0.9 by Exophase.

This version of the project has lost compatibility with NDSGBA 1.21's saved states, but gains compatibility with game_config.txt, which NDSGBA 1.30 does not have. It aims to improve the emulator's GUI and some core issues whenever possible.

Installation

Extract the _dstwoplug and TEMPGBA directories from the archive into your storage card's root directory, which is the directory that appears immediately after opening the storage card in a file browser.

Bundled in this release is Normmatt's open-source GBA BIOS replacement based on VBA-M's BIOS emulation code.

You may also use the real GBA BIOS to help the compatibility of certain games, rename the file to gba_bios.bin, and place it in the TEMPGBA folder.

User guide

game_config.txt

In this release, you'll find a file named game_config.txt. It's identical to the one in gpSP Kai. When you unzip the release, put this file in the "TEMPGBA" folder on your storage card.

This file helps improve game compatibility in two ways:

  • It informs TempGBA about the save type a game uses, ensuring battery-backed saves work properly.
  • It tells TempGBA about idle loops in a game, allowing it to run faster by stopping emulation when the game hits these points.

Using NDSGBA saved states

The NDSGBA saved state format didn't work well for updating the emulator because each new version could mess up older saved states.

To play a NDSGBA saved state, follow these steps:

  1. Open the same version of NDSGBA you used to make the saved state.
  2. Load the game, then load the saved state. Save in the game, then close NDSGBA. (Closing NDSGBA creates the .sav file. TempGBA doesn't need to be closed.)
  3. On your computer, move the .sav file from /NDSGBA/GAMERTS on your storage card to /TEMPGBA/SAVES. You can do this for multiple games if you repeat steps 1 and 2.
  4. Open TempGBA.
  5. If you want to make a saved state (or use a .sav file), load the game, which will load the .sav file, then create a TempGBA saved state.

Game compatibility

http://wiki.gbatemp.net/wiki/TempGBA_Compatibility

Cheats

The cheat support in TempGBA is untested, but should be equivalent to that of the official NDSGBA, version 1.21.

Rewinding

You can rewind the game up to 10 steps, with each step lasting from a quarter of a second to 10 seconds. By default, you get 100 seconds of rewinding, in 10-second increments, using the L+Y button combo. This helps you quickly escape tough spots in a game.

To change how long each rewind step lasts, go to the Tools menu.

You can also change the button combo for rewinding in the "Hotkey" section of the Tools menu.

Frame skipping

In the Video & audio menu, you can adjust the Frame skipping option to skip a certain number of frames between rendered frames.

Here's when you might need to tweak frame skipping:

  • If a game runs at about 10 frames per second, setting frame skipping to 1 will help you time your jumps, movements, or shots.
  • If you want to display more frames per second in a game already showing 20, setting frame skipping to 1 or 0 will make more frames appear. However, if you set it to 0 and the audio starts crackling too much, the game might crash the Supercard DSTwo itself, requiring you to reboot your Nintendo DS.
  • Setting it to 10 means skipping 10 frames and rendering one. But during this time, you might find it hard to perform actions with the DS buttons. It's best to set frame skipping to the lowest value that still lets you play the game smoothly.

Hotkeys

Note: Hotkeys are recognized as DS keys, not remapped GBA keys.

You can assign hotkeys to use any buttons left over from button remapping, provided you're not using the rapid fire A and B buttons.

Each action has a global hotkey and a game-specific override hotkey. For instance, you might want to bind the DS R button to Rewind, but a game might use a button mapped to it for something important. In this case, you can set the global hotkey to R and create an override with X for that game.

Hotkeys are sent to the current game after remapping and to their corresponding action. A hotkey is activated when at least all of its buttons are held. Additional keys are sent to the game and can trigger another hotkey. For example, if you set a hotkey to L and another to R+X, pressing L+R+X+Y will trigger both and send all GBA buttons mapped to L, R, X, and Y to the game.

Available actions are:

  • Go to main menu - In addition to tapping the Touch Screen to return to the main menu, you can set a hotkey to do the same.
  • Temporary fast-forward - While this hotkey is held, the fast-forward option will be forced on.
  • Rewind - A hotkey needs to be set here if you want to use the rewind feature in a game. After each second the hotkey is held, the game will rewind one step.
  • Toggle sound - Each time this hotkey is held, the sound will be disabled if it's currently enabled, and vice-versa.
  • Save state #1 - Each time this hotkey is held, saved state #1 will be written, without confirmation if it exists.
  • Load state #1 - Each time this hotkey is held, saved state #1 will be loaded.

Button mapping

A Nintendo DS has more buttons than a Game Boy Advance. This emulator lets you remap your GBA buttons to different DS buttons and use rapid fire A and B buttons that trigger at 30 Hz (pressed for one frame, released the next).

You can adjust button mapping in the Tools menu. Each mapping has a global setting and a game-specific override. This allows you to keep your usual mapping but change it for specific games. For example, you might prefer Y and B for a platformer or the original SNES controller layout for an SNES game re-release.

Buttons are sent to the GBA after mappings are applied.

By default, DS buttons are mapped to corresponding GBA buttons: A to A, B to B, L to L, R to R, Start to Start, and Select to Select. DS buttons X and Y are unused; you can set them as rapid fire buttons or use them as hotkeys.

If there's a game-specific mapping, it overrides the global mapping for the same GBA button, not the same DS button.

Available mappings:

  • GBA key A
  • GBA key B
  • GBA key Start
  • GBA key Select
  • GBA key L
  • GBA key R
  • Rapid fire A
  • Rapid fire B

Screenshots

tempgba2.png

Changelog

TempGBA-mod 2015/02/21

  • Unofficial build with Improved compatibility.
  • Only works with .sav files.
  • Requires skip frames (or it will crash).

1.45 2013/09/15

Note:

  • This version is a product of the ReGBA project, which separates cross-platform code from the DSTwo-specific code.

Changes:

  • Includes an open-source replacement for the GBA BIOS made from VBA-M's BIOS emulation code. Thanks to Normmatt for this! You can still use the Nintendo BIOS if you have it in the /TEMPGBA folder of your storage card, but if you extract all of the files in this release, you will replace it with Normmatt's BIOS.
    • Works around a desynchronisation between the Direct Sound music channels and the PSG (Game Boy beeper) channels. If you load a saved state made in TempGBA betas 12-15 or versions 1.40-1.44, and the desynchronisation was below 186 milliseconds, it will be retroactively fixed. If it was already above 186 milliseconds, then the desynchronisation will fix itself after about an hour of play.
    • Fixes a bug whereby uncompressed ROMs in zip files would not load if they were larger than 8 MiB.
    • All high-level BIOS emulation is disabled except SWI 06h, Div, and 07h, DivARM.
    • The plugin is now 290 KiB smaller, out of a previous 2237 KiB.

Under the hood:

  • Assembler optimisations. Move some load-memory instructions so that they occur at least 4 cycles before the first instruction that will use the loaded value.
  • Recompiler block scanning optimisations.

1.44 2013/07/11

  • Add a Chinese translation using traditional characters submitted by kane159.
  • Make the automatic frameskipper display 30 FPS or fewer instead of 60 FPS or fewer to stop crashes. Using manual frameskip 0 (60 FPS) may still make your DSTwo crash.

1.43.1 2013/06/19

  • A maintenance release to fix the "Load state" cells in the Saved states menu. In 1.43, they would fail 100% of the time.

1.43 2013/06/16

File selector improvements:

  • Supports more than 511 elements in a folder without crashing, RAM permitting. A progress indicator appears if a directory is large. For example, "Loading... (950)" indicates that the file selector has looked at 950 entries so far.
  • The screenshot slideshow does not crash with an exception if there are no screenshots.
  • It should not be possible anymore to be "locked" into the last page if it has 1 or 2 elements and you enter it with the R shoulder button.
  • Sorting has been optimised with GameYob's quicksort code.
  • Folders are now sorted inline with files.

1.42 2013/06/04

  • Automatic frameskip can now alternate between 0 frameskip (60 FPS) and 2 frameskip (20 FPS) as needed by the currently loaded game. BUT NEVER 1 FRAMESKIP. That's because of flashing objects in games, which flash at 30 Hz.
  • Packs the newest version of game_config.txt as of this writing.
  • Contains instructions in installation.txt to put the BIOS at the correct location. These instructions were already in README.md.

1.41+memory-access-3.1 2013/06/02

Note:

  • This version is like beta 15, but hopefully no games crash outright when they didn't in beta 14 / version 1.41.

Changes:

  • A second workaround for an audio bug that makes games crash.
  • Translation gates are not supported at all anymore. They are ignored in game_config.txt if present, and are not checked constantly while compiling blocks. This may speed things up a little.
  • Might make "prefetch patched" versions of the Classic NES/Famicom Mini games work. The clean ROMs will not work because gpSP does not emulate the ARM prefetch queue, and the Classic NES/Famicom Mini games detect emulators this way.
  • Self-modifying code is now reused instead of being constantly wasted, in case the game rewrites the same code at the same place again. More detailed statistics are present about this in /Tools/Debugging (in English only).
    • Golden Sun 2 is sped up 80%. This eliminates most sound crackling at frameskip 1 and 396 MHz, especially in the Kandorean Temple.
    • Golden Sun is sped up 50%. This eliminates almost all sound crackling at frameskip 0 and 360 MHz.
    • Doom II is sped up 10%-40%, depending on the area. It still crackles and lags at 396 MHz. Its bottleneck is video.
    • Duke Nukem Advance is sped up 30%. This raises the frame rate in more complex areas with lots of polygons. It still crackles and lags at 396 MHz.
    • Mario Tennis is sped up 120%. This makes the game almost flawless at frameskip 0 and 360 MHz.
    • Mario Golf is probably sped up as well.

1.41 2013/05/23

  • Completed localisations: Simplified Chinese (thanks kukuasir), Dutch (thanks Aeter), German (thanks SignZ), Portuguese from Brazil (thanks Diego Liberal), Spanish (thanks Boriar).
    • Themeable colors have been expanded to message box text (MessageText), the color of the screen around message frames during gameplay (Background), as well as selected/unselected main menu items (ActiveMain and InactiveMain). See TEMPGBA/SYSTEM/GUI/uicolors.txt for examples using the default purple skin. This should now suffice for theme authors.

1.40 2013/05/20

Note:

  • Based on beta 14, not beta 15.

Changes:

  • Add the option to play games on the Lower Screen instead of the Upper Screen (GitHub issue #12).
  • Add the option to start games from the GBA BIOS (logo) (GitHub issue #9).
  • Make the FPS counter disappear if it has insufficient data: when switching games and when entering the menu.
  • The game-specific button mapping interface now shows the global mappings with '(global)' next to their DS button. This better conveys the entire set of mappings that apply to a game (GitHub issue #19).
  • The most recently played ROM now goes to the top instead of the bottom (GitHub issue #21).
  • The text colors are now loaded in TEMPGBA/SYSTEM/GUI/uicolors.txt for theming (GitHub issue #7).

beta 15 2013/05/18

Note:

  • Beta 15, the Second Compatibility Edition. Do not use this version on any game other than the ones sped up below. It breaks them.

Changes:

  • Might make "prefetch patched" versions of the Classic NES games work. The clean ROMs will not work because gpSP does not emulate the ARM prefetch queue, and the Classic NES games detect emulators this way.
  • Self-modifying code is now reused instead of being constantly wasted, in case the game rewrites the same code at the same place again. Even more detailed statistics are present about this in /Tools/Debugging (in English only).
    • Golden Sun 2 is sped up 80%. This eliminates most sound crackling at frameskip 1 and 396 MHz, especially in the Kandorean Temple.
    • Golden Sun is sped up 50%. This eliminates almost all sound crackling at frameskip 0 and 360 MHz.
    • Doom II is sped up 10%. It still crackles and lags at 396 MHz. Its bottleneck is video.
    • Duke Nukem Advance is sped up 30%. This raises the frame rate in more complex areas with lots of polygons. It still crackles and lags at 396 MHz.
    • Mario Tennis is sped up 120%. This makes the game almost flawless at frameskip 0 and 360 MHz.
    • Mario Golf is probably sped up as well.
  • 3 rewind steps are gone. This brings the number to 7.

beta 14 2013/05/05

  • Incorporate a fix for filesystem corruption by BassAceGold. Handles Short File Names (SFN) and Long File Names (LFN) more correctly and prevents duplicate aliases (two files named MARIO~01.RTS, for example).
  • There is only this in beta 14. It is pretty important. Please test it.

beta 13 2013/05/01

  • Fix GitHub issue #13, " Lufia - sound crackling and crashes after loading from .sav".
  • Fix GitHub issue #10, "File selectors activate the wrong file by touch".
  • Fix GitHub issue #8, "Pokemon Flora Sky Hacked ROM Audio Issues".
  • These changes may affect compatibility of other games in unknown ways, improving or deteriorating their support. Please test problematic games from beta 12 anew in beta 13.

beta 12 2013/04/27

Note:

  • Beta 12, the Compatibility Edition. This version changes drastically the game compatibility and speed of the emulator. See below for details.

Changes:

  • Crashes are now far less likely, but still possible, when manual frame skip 0 is selected.
  • Accelerate games that use self-modifying code in IWRAM or EWRAM. (This list is incomplete.)
    • Doom (+30%) is almost flawless at 396 MHz.
    • Doom II (+100%) is greatly improved over NDSGBA 1.21, but still struggles with high polygon counts, even at 396 MHz.
    • Duke Nukem Advance (+40%) is somewhat improved, but struggles in many parts of the game, even at 396 MHz.
    • Golden Sun (+70%) is now playable without hiccups at 336 MHz and above, even in battles with critical hits, and fast-forwards to 120-150 FPS at 396 MHz.
    • Golden Sun 2 is now playable with few hiccups at 396 MHz, even during graphics-heavy cutscenes, and fast-forwards 50% quicker.
    • Mario Golf: Advance Tour should now have fewer sound glitches.
    • Mario Tennis: Power Tour (+60%) is now playable with slight hiccups at 396 MHz. These hiccups are dependent upon the complexity of the music that is playing.
    • Games that execute the same code as ARM and Thumb should now work. (This list is incomplete.)
    • Golden Sun 2 should not crash anymore with a "Guru Meditation, Jump to unmapped address E1A00800 from 030xxxxx" or return abruptly to the EOS Plugin Menu in battles.
    • Tales of Phantasia should not crash anymore with a "Guru Meditation, Jump to unmapped address E17xxxxx" screen or return abruptly to the EOS Plugin Menu at the title screen.
    • Accelerate games that use ROM mirror addresses.
  • Slightly smoother return from fast-forward.
  • A ROM information interface is now found under /Tools/Debugging. It gives the values for game IDs as game_config.txt expects them.
  • The bundled game_config.txt has had all translation_gate entries disabled.
  • 4 rewind steps are removed. 10 are left.

beta 11 2013/04/19

Note:

  • Beta 11, the Audio Edition. This release helps the Golden Sun games a lot, as well as Mario Tennis: Power Tour. Other games it helps are yet unknown, and some games may work WORSE than before, though I took great care to ensure that this doesn't happen. Please test your games and file bug reports.

Changes:

  • Audio now doesn't crackle when using manual frame skipping. HOWEVER, with frame skipping 0, some games just crash if they're unable to render all frames!
  • Audio is dampened when fast-forwarding, so that high amplitude changes don't cause loud pops.
  • Dutch translation added/updated. Thanks Aeter!

Technical:

  • Prepare the ARM-to-MIPS (GBA to DSTwo) code compiler for massive optimisations. Currently, branches into ROM or BIOS (read-only) code are hard-linked for efficiency, but branches into IWRAM and EWRAM (writable) code are resolved indirectly. As many instructions as possible are compiled at once in ROM, but only a few at a time are compiled at once in RAM. This will allow me to speed up a lot of games in a later beta.
  • Translation gates in game_config.txt are no longer needed. They are still honoured if found, but due to the above change, their value has diminished. Whereas in beta 9 you would find a 40%+ improvement when using a well-placed translation gate, in beta 11 it has 5%- improvement.

beta 10 2013/04/11

Note:

  • Beta 10, the Performance Counter Edition.

Technical:

  • Collects performance statistics that are relatively inexpensive to collect, and displays them in /Tools/Debugging. A rough measure of the complexity of a game's recompilation is available, as well as the number of frames emulated and the number of sound buffer underruns detected by the code. They're better known as "odd silences" or "crackling", and the code doesn't detect all of them.
  • Some games with high amounts of "RAM bytes flushed" (See /Tools/Debugging/ARM-to-MIPS translation statistics to know what this is) have been helped by better MIPS caching behaviour; those would be Golden Sun, Golden Sun 2, Mario Tennis, etc. If a game has high amounts of RAM bytes flushed and it runs slowly, that means it's missing a translation gate entry in its game_config.txt section.

beta 8 2013/04/03

Note:

  • old_count is now disabled. The CPU emulation timing has changed, hopefully for the better. Please re-test your games.

Changes:

  • Sleeps when the lid is closed during emulation.
  • Adds quick saved-state creation and loading hotkeys.
  • Writes a .sav file to storage 10 frames (1/6 of a second) after it's done being written to the emulated GBA's save area.
  • FPS counter! Now you can see how many frames you get per second! Yay!

beta 7 2013/04/01

  • Hotkeys for fast-forwarding (while held) and muting (toggle) during a game.
  • Fixes a bug whereby a frame is rendered out-of-order when automatic frameskip increases or fast-forwarding starts or ends.

This release modifies many files in the install directory. Please install it anew, including the TEMPGBA system directory.

beta 6 2013/03/30

Note:

  • Beta 6, the GUI Loose Ends Edition.

Changes:

  • Reading .bmp files in TEMPGBA/SYSTEM/GUI is much faster at startup. This is a card-speed dependent optimisation.
  • Avert a crash in the saved states interface when touching a delete cell.
  • Preserves the position inside submenus until you return to the game.
  • "Save a screenshot" now works when touched.
  • Responds to quick repeated button presses better in the menu. (e.g. when you press B madly to exit submenus)
  • Increased button auto-repeat from 1/5 second to 1/20 second, with the first auto-repeat after half a second. Helps with larger ROM folders and cheat packs.
  • Stop some text rendering oddities in the recently played games submenu.

beta 5 2013/03/29

  • Fix a bug in beta 4 whereby games broke in odd ways if they used BIOS calls.

beta 4 2013/03/29

  • Add a "Return to main menu" hotkey. This uses text in all 8 languages from CATSFC.
  • UI: Prevent the path from flashing at the top of a file selector when moving between files.
  • UI: Make the "Save a screenshot" and Language options work with touch. Touch handling code is also completely revamped.
  • UI: Hopefully stop some button press/release recognition lag. Please give feedback about this on the external discussion on GBATemp.

Technical:

  • Use high-level emulation (HLE) for some more GBA BIOS calls.

beta 3 2013/03/27

Changes from beta 2:

  • 32 MiB .zip ROMs extract correctly again. They extract outside of the GAMES directory because having a $tmp.gba file in there is unsightly.
  • Fix a bug whereby, after loading a saved state, there is a desynchronisation between the PSG channels and the Direct Sound channels. This has broken saved states again!
  • The saved state deletion menu now deletes the correct number of saved states, either one or all, for the currently selected row.
  • A new Basic Initialisation Error screen has made its way into this version. If it appears, it will refer you to the README.md file.

Changes from NDSGBA 1.30:

  • The directory structure inside the TEMPGBA system directory has changed! Please put your games in TEMPGBA/GAMES (formerly gamepak), cheat files in TEMPGBA/CHEATS (formerly gamecht), and move your saves from gamerts to TEMPGBA/SAVES. Pictures will go to TEMPGBA/PICS.
  • Menus now have the first item selected by default instead of the back button.
  • The back button is more visibly selected when it is.
  • The saved state UI has been revamped. The delete menu now starts with the row of single state deletion cells. The screenshot of the currently selected saved state is shown upon entering the saved state menu, or when changing states in any row (create, load and delete) for convenience, or after saving a state. The time at which a saved state was created is shown with its screenshot.
  • game_config.txt support has been restored! This improves game compatibility and is required by some 128 KiB-save games to correctly save.
  • The default skin and font are that of CATSFC, with a prettier GBA icon for game files and a GBA controller loading screen.
  • The 8 languages of CATSFC are in TempGBA. Some messages are still in English. I will put out a call for translators when the feature set is more complete.
  • ARG support for loading the emulator using a file browser's associations. Thanks, BassAceGold!
  • The menu has touch screen support. Thanks for the CATSFC improvement, ShadauxCat!
  • 16 saved state slots are available, and you can overwrite any state. You can also see the screenshot of a state you're about to overwrite or delete!
  • CPU speeds imported from CATSFC. Speed 3 (360 MHz) is selected by default. In NDSGBA, speed 2 (336 MHz) was the default.
  • Close the lid of your DS and it shall sleep if it's in the menu.
  • A useful README file is included.
  • All interfaces have 8 rows instead of 6.
  • Button remapping is available globally and per-game for GBA buttons Start, Select, L and R. NDSGBA 1.30 has remapping per-game for A, B, rapid A and rapid B.
  • The rewind hotkey, L+Y, is user-definable globally and per game.
  • The rewind option was "Rewind enable" and "Rewind period". It is now only one option.
  • The frame skipping option was "Frame skip type" and "Frame skip value". It is now only one option.
  • A core issue with the GBA sound is fixed by issuing sound at 131072 Hz and resampling it to 32768 Hz. This fixes the sound in some GBA Video cartridges and Golden Sun - The Lost Age.
  • Sound crackles/bubbles less in slower games.
  • Fast-forwarding can have sound; in NDSGBA it could not. You can mute it.
  • Emulator and game configuration is only saved when changed, preserving the write cycles of storage cards.
  • It has become impossible to set certain gpSP options by hex-editing ndsgba.cfg.
  • Cheat support may have deteriorated.

External links

Advertising: