Giter Site home page Giter Site logo

gbarunner3's Introduction

gbarunner3's People

Contributors

dartz150 avatar gericom avatar lifehackerhansol avatar veanika avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gbarunner3's Issues

[Feature Request] Multi save slots support

Have the option to choose multiple save slots, i.e:

rom.gba
rom.sav
rom.sav1
rom.sav2

This can be done via a frontend (like twilightmenu++) but it would be nice to have it as an standalone feature.

Return correct values on bios read

Currently a fixed value is returned, but this should be depended on the last fetched bios opcode. Some games reading from 0 might crash if they don't get the correct value.

[Game] Mario & Luigi - Superstar Saga hangs when entering a battle

[Console tested]
DS Lite/Nintendo DSi

[Device used]
Ace3DS+ early clone with the 2014 label/SD Card 32GB

[Game Info]
Mario & Luigi - Superstar Saga - TID: A88E

[Issue Description]
The game hangs on the "3D Star" transition effect when a battle is about to begin, the game can be still soft-reseted using the key-combo.

This issue could be related to the exact same issue happening in some emulators such as gpSP, which was fixed in this commit: libretro/gpsp@2bbd770

Iridion II crashes on undefined Opcode

The game crashes on various points in-game. Getting to these points in no$gba shows warning about undefined opcode:

no$gba Screenshot

image

Attached savestate from no$gba debug version. Get to the boss and watch the warning kick in after a few seconds. Same place triggers it in GBARunner3.

IridionIIPreBossStage2.zip

In GBARunner3 you can use the password 4RC8! and enter challenge mode to test this.

Some games freeze when a soft reset is triggered

The game gets stuck into a white screen, either when finishing it or pressing a key combination such as SEL+START+A+B

Games tested that had this issue so far:

Legend of Zelda: The Minish Cap
Legend of Zelda: A Link to the Past + Four Swords
Castlevania: Aria of Sorrow
Castlevania: Harmony of Dissonance

[Idea] Replacing game irq handler by kernel mode code

For games that suffer a lot from irq latency, mainly hblank and vcount irqs, it might help to replace the games irq handler completely by kernel mode code to prevent having to handle aborts. This should reduce the irq latency. Almost every game has a slightly different irq handler, and game specific implementations might be needed. For dispatching clz can probably be used.

Top Gun Combat Zones doesn't get past Main Menu due to checking savetypes when not using saves

The game does not react to A-button inputs on main menu prohibiting you from getting past the main menu.
The game actually uses password saves.
Check comment from here: https://datomatic.no-intro.org/index.php?page=show_record&s=23&n=1903

"Top Gun - Combat Zones" is listed as having save-type "Flash512_v131" but this is not the case.
In fact, the game follows the heuristics for *every* save-type as an anti-piracy measure.
If it finds any non-volatile storage, it disables all the main-menu options.

According to datomatic it uses Flash512_v131

Implement detaching the JIT

In many games this probably works fine once the game has ran for a few frames and some irqs have been handled.

Detaching the jit means that all jitted instructions, except for mrs/msr and movs/subs pc, will be restored to the original instruction.

Final Fantasy V when monk uses the kick command it takes a very long time to finish

Use the kick command with a monk and the animation will just keep going what seems infinitely but letting it continue for a minute made it finish. The monk character keeps sliding horizontally back and forth. It's possible to hold L + R to make the characters prepare to run, but they only walk in place.

no$gba save state, version 3.0.5:
FFVkickCommandUSA.zip

Save file for use with GBARunner3
Final_Fantasy_V_Advance_Europe_EnFrDeEsIt.zip

Known issue in GBARunner2 too.

no$gba battery save file for US version. Just walk around and trigger a battle and make the monk character use the kick command:
Final Fantasy V Advance USA no$gba Kick command.zip

[Game] DragonBall Z: Taiketsu and Legacy of Goku error screen

[Game]
Dragon Ball Z - Taiketsu | BDBE | USA
Dragon Ball Z - The Legacy of Goku | ALGE | USA

[Device Info]
Commit tested: 280b011
Build date: 14 Oct 2023
Branch: develop
Console: DSi
Device: SD Card

[Issue]
Pressing START on title screen in both games shows "This game will not run on this hardware"

Mario & Luigi Superstar Saga crashes with the jit when starting a new game

Verified to not crash without jit.
Seems like it could be related to the iwram code that is copied just before starting the new game. Around address 0x030068AC.

Patches for running without jit:

    *(vu32*)0x022000C4 = 0xE1890090; // msr cpsr_cf, r0
    *(vu32*)0x022000D0 = 0xE1890090; // msr cpsr_cf, r0
    *(vu32*)0x022001F8 = 0xE1A00093; // mrs r3, cpsr
    *(vu32*)0x02200204 = 0xE1890093; // msr cpsr_cf, r3
    *(vu32*)0x02200218 = 0xE1A00093; // mrs r3, cpsr
    *(vu32*)0x02200224 = 0xE1890093; // msr cpsr_cf, r3
    *(vu32*)0x0220026C = 0xE1E00090; // mrs r0, spsr
    *(vu32*)0x0220031C = 0xE1A00093; // mrs r3, cpsr
    *(vu32*)0x02200328 = 0xE1890093; // msr cpsr_cf, r3
    *(vu32*)0x02200348 = 0xE1A00093; // mrs r3, cpsr
    *(vu32*)0x02200354 = 0xE1890093; // msr cpsr_cf, r3
    *(vu32*)0x02200364 = 0xE1C90090; // msr spsr_cf, r0

Golden Sun 2: The Lost Age has random audio crackling

This happens either when save data is being loaded or in-game. The crackling has a weird echo, compared to other games that have crackling.

Apparently disabling cache makes this less frequent, but still sometimes audible, specially on the opening cutscene.

Implement settings

  • Accuracy/performance

    • Whether the jit will be detached as soon as enough code has been patched -> also means hicode won't work
    • Accuracy level of the jit -> Not all possible fixes are applied at lower levels to prevent overhead. This works fine for most games
    • Whether bg vram will be aborted or not -> when not aborted byte writes are ignored instead of being duplicated, but performance for games that frequently do cpu writes to vram (e.g. software rendered 3d and video playback) would be better
    • Write buffer enable for vram -> can delay writes slightly, but can improve performance, together with disabling the abort
    • Wram icache
    • Wram dcache (not sure if this will work well), maybe a separate setting for wram write buffer as well?
    • Main memory cache
    • Whether dma0 hdma may use a hardware dma channel if possible
  • Display settings

    • Center/mask
    • Display on top/bottom
    • Screen darkening
    • Border settings
  • Input settings (key mapping, both for gba buttons and emulator actions)

[Feature Request] SD/Flashcart removal detection

Currently this is not detected and games will just gradually stop working in weird ways, until they completely freeze.

It would be better to properly detect this and throw some sort of screen error/warning.

Improve handling of thumb instructions in the jit

  • Less memory usage (support retail regular ds devices)
  • Faster emulation of instructions (with assembly code and table dispatch)

The idea is to encode most bits in the undefined instruction space and have two external satellite bits.

The Sims 2 - Pets and regular Sims 2 corrupted graphics possibly due to fragmented sd card

Having the filename longer than abcdefgh.gba triggered it with GBARunner3.nds in folder \nds\ ran via hbmenu. It also happened when GBARunner3 was run via twlmenu++.

The problem, especially the BIOS issue, did not occur with other games that had different save types than the one these two use, FLASH512_V131

BIOS messed up:

image

In-game graphics messed up:

image
image

Reformatting the SD card fixed this issue.

Error Compiling

this is what happens when I try to compile. I'm using ubuntu 20.04 btw.

linking test.elf
ArmDtcm.o: in function memu_armDispatchTable': (.dtcm+0x8): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmStmRnTable_0' defined in .dtcm section in ArmLdmStmRn.o
(.dtcm+0xa): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armStmRdTable' defined in .dtcm section in ArmLdmStmRd.o (.dtcm+0x10): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmStmRnTable_0' defined in .dtcm section in ArmLdmStmRn.o
(.dtcm+0x12): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmRdTable' defined in .dtcm section in ArmLdmStmRd.o (.dtcm+0x18): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmStmRnTable_1' defined in .dtcm section in ArmLdmStmRn.o
(.dtcm+0x1a): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armStmRdTable' defined in .dtcm section in ArmLdmStmRd.o (.dtcm+0x20): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmStmRnTable_1' defined in .dtcm section in ArmLdmStmRn.o
(.dtcm+0x22): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmRdTable' defined in .dtcm section in ArmLdmStmRd.o (.dtcm+0x28): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmStmRnTable_0' defined in .dtcm section in ArmLdmStmRn.o
(.dtcm+0x2a): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armStmRdTable' defined in .dtcm section in ArmLdmStmRd.o (.dtcm+0x30): additional relocation overflows omitted from the output collect2: error: ld returned 1 exit status make[3]: *** [/home/godreborn/GBARunner3/code/test/arm9/Makefile:146: /home/godreborn/GBARunner3/code/test/arm9/test.elf] Error 1 make[2]: *** [Makefile:130: build] Error 2 make[2]: Leaving directory '/home/godreborn/GBARunner3/code/test/arm9' make[1]: *** [Makefile:49: arm9/test.elf] Error 2 make[1]: *** Waiting for unfinished jobs.... linking test.elf ArmDtcm.o: in function memu_armDispatchTable':
(.dtcm+0x8): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmStmRnTable_0' defined in .dtcm section in ArmLdmStmRn.o (.dtcm+0xa): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armStmRdTable' defined in .dtcm section in ArmLdmStmRd.o
(.dtcm+0x10): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmStmRnTable_0' defined in .dtcm section in ArmLdmStmRn.o (.dtcm+0x12): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmRdTable' defined in .dtcm section in ArmLdmStmRd.o
(.dtcm+0x18): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmStmRnTable_1' defined in .dtcm section in ArmLdmStmRn.o (.dtcm+0x1a): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armStmRdTable' defined in .dtcm section in ArmLdmStmRd.o
(.dtcm+0x20): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmStmRnTable_1' defined in .dtcm section in ArmLdmStmRn.o (.dtcm+0x22): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmRdTable' defined in .dtcm section in ArmLdmStmRd.o
(.dtcm+0x28): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armLdmStmRnTable_0' defined in .dtcm section in ArmLdmStmRn.o (.dtcm+0x2a): relocation truncated to fit: R_ARM_ABS16 against symbol memu_armStmRdTable' defined in .dtcm section in ArmLdmStmRd.o
(.dtcm+0x30): additional relocation overflows omitted from the output
collect2: error: ld returned 1 exit status
make[3]: *** [/home/godreborn/GBARunner3/code/test/arm9/Makefile:146: /home/godreborn/GBARunner3/code/test/arm9/test.elf] Error 1
make[2]: *** [Makefile:130: build] Error 2
make[2]: Leaving directory '/home/godreborn/GBARunner3/code/test/arm9'
make[1]: *** [Makefile:35: checkarm9] Error 2
make[1]: Leaving directory '/home/godreborn/GBARunner3/code/test'
make: *** [Makefile:30: checktest] Error 2

Fix save patch swi issues

  • Ldr(b)t and str(b)t don't work as intended when aborted because the arm/thumb dispatch assumes user mode while the patch code runs in system mode
  • If an irq occurs while in system mode, things go wrong as it seems

An example of a game crashing because of an irq while saving is the sims the urbz.

Color correction

Color correction, for example by mapping palette colors through a LUT.

Load GBA game inserted into Slot-2

This would allow physical GBA carts to be booted, while using the features of GBARunner3 (such as DS sound mixer).
Could be booted using an argument such as slot2 instead of a .gba ROM path, as well as a fallback method for if rom.gba doesn't exist on the SD root.

Magical Vacation crashes in cave

The game hangs at seemingly varying points inside the cave straight to the right in the below save. It seems to be easier to trigger if pressing the pause button at any point in the cave before or after fighting the monster in the closed chest further inside. Sometimes crashes when entering the monster batlle.

Save from right before cave for GBARunner3:
Magical Vacation (Japan).zip

no$gba savestate:
magicalVacationBeforeCaveOfCrash.zip

Original opening post about now fixed issue about note hanging in pause menu:

When pausing the game a single note will keep playing while the rest of the music plays normally. Stops playing when you leave the pause menu. What note keeps playing depends on what is currently playing in the game music.

See comment further below about crashing.

Save state from ingame in no$gba. Press start to enter pause menu.
magicalVacationRetainedNote.zip

Savegame from GBARunner3
Magical Vacation (Japan).zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.