Homebrew GBARunner2

D

Deleted User

Guest
@Dodain47 Hmm, after all the sound in donkey kong country doesn't work for me anymore either. I think I broke something after I tested it, because I had it working perfectly before. I am gonna look into it

Edit: Found the problem. I was appearently accidentally still acknowledging all ds interrupts when any other interrupt was acknowledged. I thought I had cleared the bit for the arm7-arm9 irq already. I'll commit it later today

Well, then maybe i can continue testing Games with my Flashcard after all.:D

You said you are using the DevkitARM Version R41 for compiling. Is this Version more stable than the later Version?
 

Gericom

Well-Known Member
OP
Member
Joined
Jun 30, 2011
Messages
1,381
Trophies
2
Age
25
XP
4,685
Country
Netherlands
Well, then maybe i can continue testing Games with my Flashcard after all.:D

You said you are using the DevkitARM Version R41 for compiling. Is this Version more stable than the later Version?
No, I just still haven't updated it (I think I had some issues with older projects idk). You can keep using the newer version if you like.

Edit: I committed the irq fix to github so you can give it a try. Also, if you didn't know yet, you can resync the sound with X if it is a bit delayed.
 
Last edited by Gericom,
D

Deleted User

Guest
I tested these Games with the Updated Sound fifo Experiment Version from 2017/02/04:


CT Special Forces 2 - Back to Hell (E):
Almost Full Speed with some Slowdown. No Audio. Much Noise. Some Gfx Glitches. Very Playable. Same as before.

Donkey Kong Country (E): I completed the First World. Almost Full Speed with some Slowdown. The Audio improved a lot. There is still much Slowdown in the Second Level and the Water Level of the First. Playable.

Donkey Kong Country 2 (E): I played until the First Water Level. The Audio improved a lot. There is a bit more Slowdown than before I think. Playable.

Donkey Kong Country 3 (E): I played the First Two Levels. Much Slowdown. The Audio has much Noise and stuttering. Playable. The Same as before.

Doom (E): The Game is very Slow. You can hear many randomly playing Sound Samples. Some Gfx Glitches. Playable. Same as before.

Gekido Advance (E): Almost Full Speed. The Audio has much Slowdown. Some Gfx Glitches. The Game runs a bit faster now. Very Playable.

Metroid Fusion (U): You can hear a crackling Noise. The Game freezes during the Introduction. Unplayable.

Metroid Zero Mission (E): You can hear a crackling Noise. The Game freezes after either collecting the Morph Ball or leaving the Room. Unplayable.

Tak - The Great Juju Challenge (E): Full Speed. No Audio. You can hear a crackling Noise. Some Gfx Glitches. Very Playable. Same as before.

Wario Ware Inc Mega Minigame Mania (E): Full Speed. No Audio. You can hear a crackling Noise. Some Gfx Glitches. Very Playable. Same as before.


Donkey Kong Country 1&2 have improved Audio. Gekido Advance runs a bit faster now.


You can find the Updated Version below.
 

Attachments

  • GBARunner2-sound_fifo_experiment.zip
    15.6 KB · Views: 190

Melter

Well-Known Member
Member
Joined
Mar 31, 2011
Messages
190
Trophies
1
XP
540
Country
United States
Wow just came across this, this looks awesome!

so is this a GBA emulator or does it run on the DS' native GBA hardware?

I have been waiting for something like this so I can finally play GBA games on my DSi XL!
 

Gericom

Well-Known Member
OP
Member
Joined
Jun 30, 2011
Messages
1,381
Trophies
2
Age
25
XP
4,685
Country
Netherlands
Wow just came across this, this looks awesome!

so is this a GBA emulator or does it run on the DS' native GBA hardware?

I have been waiting for something like this so I can finally play GBA games on my DSi XL!
It's not an emulator but it does not run in gba mode either. It's what they call a hypervisor. It uses the DS hardware (which is for a large part very similar to the gba) and provides an additional layer that tries to emulates stuff that's not the same.
 

Melter

Well-Known Member
Member
Joined
Mar 31, 2011
Messages
190
Trophies
1
XP
540
Country
United States
I'll take it! I hope you manage to work out the issues. Can't wait!

Out of curiosity, is it not possible to create some sort of homebrew that would force the DS into GBA mode and run GBA roms natively? Similar to TWLoader on the 3DS?
 

Gericom

Well-Known Member
OP
Member
Joined
Jun 30, 2011
Messages
1,381
Trophies
2
Age
25
XP
4,685
Country
Netherlands
I'll take it! I hope you manage to work out the issues. Can't wait!

Out of curiosity, is it not possible to create some sort of homebrew that would force the DS into GBA mode and run GBA roms natively? Similar to TWLoader on the 3DS?
That's not possible sadly. It's not possible to map memory to the gba slot. And even if it was possible, the ds would never have enough memory to hold a whole gba rom. I am curious though if there wouldn't be some way to keep the arm9 running in gba mode
 

Melter

Well-Known Member
Member
Joined
Mar 31, 2011
Messages
190
Trophies
1
XP
540
Country
United States
ah I see.

I'm trying to build the source with devkitpro, but I'm getting build errors due to undefined references:

Code:
C:\GBARunner2-master>make
make -C arm7
make[1]: Entering directory `/c/GBARunner2-master/arm7'
linking GBARunner2-master.elf
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xd0): undefined reference to `__arm7_lma__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xe0): undefined reference to `__arm7_start__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xe4): undefined reference to `__arm7_end__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xf8): undefined reference to `__arm7i_start__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xfc): undefined reference to `__arm7i_end__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0x100): undefined reference to `__twl_bss_start__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0x104): undefined reference to `__twl_bss_end__'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [/c/GBARunner2-master/arm7/GBARunner2-master.elf] Error 1
make[1]: *** [build] Error 2
make[1]: Leaving directory `/c/GBARunner2-master/arm7'
make: *** [arm7/GBARunner2-master.elf] Error 2

C:\GBARunner2-master>

any suggestions?
 

Gericom

Well-Known Member
OP
Member
Joined
Jun 30, 2011
Messages
1,381
Trophies
2
Age
25
XP
4,685
Country
Netherlands
ah I see.

I'm trying to build the source with devkitpro, but I'm getting build errors due to undefined references:

Code:
C:\GBARunner2-master>make
make -C arm7
make[1]: Entering directory `/c/GBARunner2-master/arm7'
linking GBARunner2-master.elf
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xd0): undefined reference to `__arm7_lma__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xe0): undefined reference to `__arm7_start__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xe4): undefined reference to `__arm7_end__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xf8): undefined reference to `__arm7i_start__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xfc): undefined reference to `__arm7i_end__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0x100): undefined reference to `__twl_bss_start__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0x104): undefined reference to `__twl_bss_end__'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [/c/GBARunner2-master/arm7/GBARunner2-master.elf] Error 1
make[1]: *** [build] Error 2
make[1]: Leaving directory `/c/GBARunner2-master/arm7'
make: *** [arm7/GBARunner2-master.elf] Error 2

C:\GBARunner2-master>

any suggestions?
I've no idea. Maybe try using an older version of devkitpro.
 

metroid maniac

An idiot with an opinion
Member
Joined
May 16, 2009
Messages
2,081
Trophies
2
XP
2,619
Country
That's not possible sadly. It's not possible to map memory to the gba slot. And even if it was possible, the ds would never have enough memory to hold a whole gba rom. I am curious though if there wouldn't be some way to keep the arm9 running in gba mode

The DSi has enough memory to load the majority of GBA ROMs into main memory, except for the dozen or so 32MB ROMs. But then main memory isn't mapped to ARM7 at all in GBA mode so you can't use it directly, so it'd only be useful with some hypervisor like GBARunner2.
GBATek says that when entering GBA mode you manually disable interrupts and halt on ARM9, so maybe you could try just not doing that? But I don't much see what the point is.
 
D

Deleted User

Guest
ah I see.

I'm trying to build the source with devkitpro, but I'm getting build errors due to undefined references:

Code:
C:\GBARunner2-master>make
make -C arm7
make[1]: Entering directory `/c/GBARunner2-master/arm7'
linking GBARunner2-master.elf
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xd0): undefined reference to `__arm7_lma__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xe0): undefined reference to `__arm7_start__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xe4): undefined reference to `__arm7_end__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xf8): undefined reference to `__arm7i_start__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0xfc): undefined reference to `__arm7i_end__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0x100): undefined reference to `__twl_bss_start__'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/6.3.0/../../../../arm-none-eabi/lib/ds_arm7_crt0.o: In function `arm7lma':
(.crt0+0x104): undefined reference to `__twl_bss_end__'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [/c/GBARunner2-master/arm7/GBARunner2-master.elf] Error 1
make[1]: *** [build] Error 2
make[1]: Leaving directory `/c/GBARunner2-master/arm7'
make: *** [arm7/GBARunner2-master.elf] Error 2

C:\GBARunner2-master>

any suggestions?

I had the same Problem with devkitARM_r47.

devkitARM_r45 works for me.
 

Gericom

Well-Known Member
OP
Member
Joined
Jun 30, 2011
Messages
1,381
Trophies
2
Age
25
XP
4,685
Country
Netherlands
The DSi has enough memory to load the majority of GBA ROMs into main memory, except for the dozen or so 32MB ROMs. But then main memory isn't mapped to ARM7 at all in GBA mode so you can't use it directly, so it'd only be useful with some hypervisor like GBARunner2.
GBATek says that when entering GBA mode you manually disable interrupts and halt on ARM9, so maybe you could try just not doing that? But I don't much see what the point is.
I did some tests, but I am not sure if the ARM9 might be powered off anyway by the hardware when switching to gba mode. Also because the bus speed changes. The only reliable place you could execute code from would be itcm, but I am not sure how you should test then if the code runs, because I am not sure if you would be able to use the bus in a relyable way and if the display registers are still mapped to the arm9 or not
 

metroid maniac

An idiot with an opinion
Member
Joined
May 16, 2009
Messages
2,081
Trophies
2
XP
2,619
Country
I did some tests, but I am not sure if the ARM9 might be powered off anyway by the hardware when switching to gba mode. Also because the bus speed changes. The only reliable place you could execute code from would be itcm, but I am not sure how you should test then if the code runs, because I am not sure if you would be able to use the bus in a relyable way and if the display registers are still mapped to the arm9 or not

Could ARM9 trigger one of ARM7's interrupts? If you only need to know that ARM9 is alive that might be enough.
 

Gericom

Well-Known Member
OP
Member
Joined
Jun 30, 2011
Messages
1,381
Trophies
2
Age
25
XP
4,685
Country
Netherlands
Could ARM9 trigger one of ARM7's interrupts? If you only need to know that ARM9 is alive that might be enough.
That would not work, because the arm7 irq controller is in compatibility mode and would probably not respond. It would also require bus access, but maybe the arm9 bus is not changed and only the arm7 bus runs slower. I have no idea. I am currently trying to buy an IS-NITRO-EMULATOR. If I manage to get one, I can probably do some tests with it.
 
D

Deleted User

Guest
I have tested these Games with both 2017/01/30 Master branch and Sound fifo Experiment Version from 2017/02/04:


Hagane no Renkinjutsushi - Meisou no Rondo (Eng.Patch 0.01): Full Speed. Very Good Audio. Some Gfx Glitches. Very Playable.

Hagane no Renkinjutsushi - Omoide no Sonata (J): Full Speed. Very Good Audio. Some Gfx Glitches. Very Playable. The Audio has more Noise in the Master branch Version.

Wakeboarding Unleashed featuring Shaun Murray (E): Sram patching required to boot the Game. The Game freezes on the Licensed by Screen. Unplayable.

Whac-A-Mole (U): I completed Stage 1 Level 1. Full Speed. Very Good Audio. Some Gfx Glitches. Very Playable.

Who Wants to Be a Millionaire (E): The FMV´s are messy. Full Speed. Good Audio with some Noise. Some Gfx Glitches. Very Playable.

Who Wants to Be a Millionaire - 2nd Edition (E): The FMV´s are messy. Full Speed. Good Audio with some Noise. Some Gfx Glitches. Very Playable.

Who Wants to Be a Millionaire Junior (E): The FMV´s are messy. Full Speed. Good Audio with some Noise. Some Gfx Glitches. Very Playable.

Wild Thornberrys Movie (UE): I tested some Minigames and the Story Mode. Full Speed. Very Good Audio. Some Gfx Glitches. Very Playable.

Wild Thornberrys Chimp Chase (UE): Almost Full Speed with some Slowdown. Good Audio with some Noise and stuttering. Some Gfx Glitches. Very Playable. The Game freezes in the Master branch Version.

Wild (UE): I completed the First Tutorial. Full Speed. Good Audio with some Noise and stuttering. There is some Noise during saving. The Gameboy Sounds are missing. Some Gfx Glitches. Very Playable.


Clearly the Sound fifo Experiment Version is now superior to the Master branch. For testing purposes, I´ll be using the Sound fifo Version from now on.
 

Attachments

  • gbarunner2.zip
    15.6 KB · Views: 211
Last edited by ,

Melter

Well-Known Member
Member
Joined
Mar 31, 2011
Messages
190
Trophies
1
XP
540
Country
United States
I'm getting a red top screen and white bottom screen with the word "TEST" showing up. anyone know what I'm doing wrong? This is both with the version I built as well as the last two builds uploaded on the gbatemp wiki.

DSiXL on R4i Gold 32gb FAT32 microSD.
 

Gericom

Well-Known Member
OP
Member
Joined
Jun 30, 2011
Messages
1,381
Trophies
2
Age
25
XP
4,685
Country
Netherlands
I have tested these Games with both 2017/01/30 Master branch and Sound fifo Experiment Version from 2017/02/04:


Hagane no Renkinjutsushi - Meisou no Rondo (Eng.Patch 0.01): Full Speed. Very Good Audio. Some Gfx Glitches. Very Playable.

Hagane no Renkinjutsushi - Omoide no Sonata (J): Full Speed. Very Good Audio. Some Gfx Glitches. Very Playable. The Audio has more Noise in the Master branch Version.

Wakeboarding Unleashed featuring Shaun Murray (E): Sram patching required to boot the Game. The Game freezes on the Licensed by Screen. Unplayable.

Whac-A-Mole (U): I completed Stage 1 Level 1. Full Speed. Very Good Audio. Some Gfx Glitches. Very Playable.

Who Wants to Be a Millionaire (E): The FMV´s are messy. Full Speed. Good Audio with some Noise. Some Gfx Glitches. Very Playable.

Who Wants to Be a Millionaire - 2nd Edition (E): The FMV´s are messy. Full Speed. Good Audio with some Noise. Some Gfx Glitches. Very Playable.

Who Wants to Be a Millionaire Junior (E): The FMV´s are messy. Full Speed. Good Audio with some Noise. Some Gfx Glitches. Very Playable.

Wild Thornberrys Movie (UE): I tested some Minigames and the Story Mode. Full Speed. Very Good Audio. Some Gfx Glitches. Very Playable.

Wild Thornberrys Chimp Chase (UE): Almost Full Speed with some Slowdown. Good Audio with some Noise and stuttering. Some Gfx Glitches. Very Playable. The Game freezes in the Master branch Version.

Wild (UE): I completed the First Tutorial. Full Speed. Good Audio with some Noise and stuttering. There is some Noise during saving. The Gameboy Sounds are missing. Some Gfx Glitches. Very Playable.


Clearly the Sound fifo Experiment Version is now superior to the Master branch. For testing purposes, I´ll be using the Sound fifo Version from now on.
Nice! In that case I'll merge the fifo experiment into master later today.
I'm getting a red top screen and white bottom screen with the word "TEST" showing up. anyone know what I'm doing wrong? This is both with the version I built as well as the last two builds uploaded on the gbatemp wiki.

DSiXL on R4i Gold 32gb FAT32 microSD.
Does your sd card have 4kb clusters? If not, please try that. I know there are problems with some cards, but not with the R4i iirc. To be sure you could try the arm7 branch too, but it's a bit behind. I'm planning on implementing it using a #define or something.
 

bakawun

Well-Known Member
Member
Joined
Jan 10, 2017
Messages
227
Trophies
0
Age
37
XP
93
Country
Luxembourg
Nice! In that case I'll merge the fifo experiment into master later today.

Does your sd card have 4kb clusters? If not, please try that. I know there are problems with some cards, but not with the R4i iirc. To be sure you could try the arm7 branch too, but it's a bit behind. I'm planning on implementing it using a #define or something.
We're pretty much telling everyone to format every card into 32kb cluster sizes.
Is there a good reason to use 4kb?
 

bakawun

Well-Known Member
Member
Joined
Jan 10, 2017
Messages
227
Trophies
0
Age
37
XP
93
Country
Luxembourg
It is faster with gbarunner2 atm. It also gave problems in the past, but I think those were solved.
Hopefully you will be able to make 32kb cluster size be optimal at some point.

I have something else for you.
Did you know Higan is the 2nd most accurate gba emulator?

It's fully open source and written in such a way to help understand what is happening on the hardware level.
most of the source can be found here: https://gitlab.com/higan/higan/tree/master/higan/gba
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: https://www.youtube.com/watch?v=uLN9qrJ8ESs