gericom / gbarunner2 Goto Github PK
View Code? Open in Web Editor NEWA GBA hypervisor for DS. (like nintendont for gc on wii)
A GBA hypervisor for DS. (like nintendont for gc on wii)
Aria of Sorrow runs nearly flawlessly with the latest commit, but the audio slowly goes out of sync as you play on. For example, after a while it takes more than half a second for the attack sound to occur from the moment the attack button is pressed. The same is true for all sound effects from menus or jumping.
To prevent non-working games from doing strange things and accidentally corrupting the fat table and then the sd card.
is only a question
when I start metroid zero mission everything goes normal until I get the first item of the game there crashing
i don´t speak in english this is made with google translator
I cant compile GBARunner2 because I dont have any devkitpro compatable computers at the moment. could you send me a compiled rom.
thanks in advance.
A common problem with the DSi is that the L/R buttons stop working over time. Allowing users to use the X/Y buttons as well/instead makes it possible to play certain games.
I tried looking through the code to do this myself, but I was unable to find the section that handles button input. If you can point me in the right direction, I would be willing to try doing this myself.
I can't get GBARunner2 to work on my DSi XL. I'm using Twilightmenu++ and I have put the bios in the right dircetory, tried multiple bioses, but all I get is a white screen with "BINF3DS sd card áß áß áß áß áß áß áß áß " written.
Am I doing something wrong?
I've been trying to compile the sd_save branch of GBARunner2 for awhile now but it is not working. I have the log here.
make -C arm7
make[1]: Entering directory '/c/users/owner/desktop/gbarunner2/arm7'
main.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm7/build/main.d -g -Wall -O3 -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer -ffast-math -mthumb-interwork -marm -I/c/users/owner/desktop/gbarunner2/arm7/include -I/c/users/owner/desktop/gbarunner2/arm7/source -I/c/users/owner/desktop/gbarunner2/arm7/build -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm7/build -DARM7 -fno-exceptions -fno-rtti -c /c/users/owner/desktop/gbarunner2/arm7/source/main.cpp -o main.o
In file included from C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp:3:
C:/users/owner/desktop/gbarunner2/arm7/source/timer.h:23: warning: "TIMER_FREQ" redefined
#define TIMER_FREQ(x) (-33513982/(x))
In file included from C:/devkitPro/libnds/include/nds.h:241,
from C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp:1:
C:/devkitPro/libnds/include/nds/timers.h:145: note: this is the location of the previous definition
#define TIMER_FREQ(n) (-BUS_CLOCK/(n))
In file included from C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp:4:
C:/users/owner/desktop/gbarunner2/arm7/source/sound.h:35: warning: "REG_SOUNDCNT" redefined
#define REG_SOUNDCNT (((vu32)0x04000500))
In file included from C:/devkitPro/libnds/include/nds.h:286,
from C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp:1:
C:/devkitPro/libnds/include/nds/arm7/audio.h:67: note: this is the location of the previous definition
#define REG_SOUNDCNT ((vu16)0x4000500)
In file included from C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp:4:
C:/users/owner/desktop/gbarunner2/arm7/source/sound.h:41: warning: "REG_SOUNDBIAS" redefined
#define REG_SOUNDBIAS (((vu32)0x04000504))
In file included from C:/devkitPro/libnds/include/nds.h:286,
from C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp:1:
C:/devkitPro/libnds/include/nds/arm7/audio.h:68: note: this is the location of the previous definition
#define REG_SOUNDBIAS ((vu32)0x4000504)
C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp: In function 'int main()':
C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp:103:3: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
while(REG_FIFO_CNT & FIFO_CNT_EMPTY);
^~~~~
C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp:104:3: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
{
^
C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp:112:12: warning: unused variable 'vals' [-Wunused-variable]
uint32_t vals[4];
^~~~
C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp: At global scope:
C:/users/owner/desktop/gbarunner2/arm7/source/main.cpp:10:13: warning: 'void vblank_handler()' defined but not used [-Wunused-function]
static void vblank_handler()
^~~~~~~~~~~~~~
save.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm7/build/save.d -g -Wall -O3 -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer -ffast-math -mthumb-interwork -marm -I/c/users/owner/desktop/gbarunner2/arm7/include -I/c/users/owner/desktop/gbarunner2/arm7/source -I/c/users/owner/desktop/gbarunner2/arm7/build -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm7/build -DARM7 -fno-exceptions -fno-rtti -c /c/users/owner/desktop/gbarunner2/arm7/source/save.cpp -o save.o
In file included from C:/users/owner/desktop/gbarunner2/arm7/source/save.cpp:2:
C:/users/owner/desktop/gbarunner2/arm7/source/timer.h:23: warning: "TIMER_FREQ" redefined
#define TIMER_FREQ(x) (-33513982/(x))
In file included from C:/devkitPro/libnds/include/nds.h:241,
from C:/users/owner/desktop/gbarunner2/arm7/source/save.cpp:1:
C:/devkitPro/libnds/include/nds/timers.h:145: note: this is the location of the previous definition
#define TIMER_FREQ(n) (-BUS_CLOCK/(n))
dldi_handler.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm7/build/dldi_handler.d -g -Wall -O3 -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer -ffast-math -mthumb-interwork -marm -I/c/users/owner/desktop/gbarunner2/arm7/include -I/c/users/owner/desktop/gbarunner2/arm7/source -I/c/users/owner/desktop/gbarunner2/arm7/build -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm7/build -DARM7 -fno-exceptions -fno-rtti -c /c/users/owner/desktop/gbarunner2/arm7/source/dldi_handler.cpp -o dldi_handler.o
sound.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm7/build/sound.d -g -Wall -O3 -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer -ffast-math -mthumb-interwork -marm -I/c/users/owner/desktop/gbarunner2/arm7/include -I/c/users/owner/desktop/gbarunner2/arm7/source -I/c/users/owner/desktop/gbarunner2/arm7/build -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm7/build -DARM7 -fno-exceptions -fno-rtti -c /c/users/owner/desktop/gbarunner2/arm7/source/sound.cpp -o sound.o
In file included from C:/users/owner/desktop/gbarunner2/arm7/source/sound.cpp:3:
C:/users/owner/desktop/gbarunner2/arm7/source/timer.h:23: warning: "TIMER_FREQ" redefined
#define TIMER_FREQ(x) (-33513982/(x))
In file included from C:/devkitPro/libnds/include/nds.h:241,
from C:/users/owner/desktop/gbarunner2/arm7/source/sound.cpp:1:
C:/devkitPro/libnds/include/nds/timers.h:145: note: this is the location of the previous definition
#define TIMER_FREQ(n) (-BUS_CLOCK/(n))
In file included from C:/users/owner/desktop/gbarunner2/arm7/source/sound.cpp:7:
C:/users/owner/desktop/gbarunner2/arm7/source/sound.h:35: warning: "REG_SOUNDCNT" redefined
#define REG_SOUNDCNT (((vu32)0x04000500))
In file included from C:/devkitPro/libnds/include/nds.h:286,
from C:/users/owner/desktop/gbarunner2/arm7/source/sound.cpp:1:
C:/devkitPro/libnds/include/nds/arm7/audio.h:67: note: this is the location of the previous definition
#define REG_SOUNDCNT ((vu16)0x4000500)
In file included from C:/users/owner/desktop/gbarunner2/arm7/source/sound.cpp:7:
C:/users/owner/desktop/gbarunner2/arm7/source/sound.h:41: warning: "REG_SOUNDBIAS" redefined
#define REG_SOUNDBIAS (((vu32)0x04000504))
In file included from C:/devkitPro/libnds/include/nds.h:286,
from C:/users/owner/desktop/gbarunner2/arm7/source/sound.cpp:1:
C:/devkitPro/libnds/include/nds/arm7/audio.h:68: note: this is the location of the previous definition
#define REG_SOUNDBIAS ((vu32)0x4000504)
C:/users/owner/desktop/gbarunner2/arm7/source/sound.cpp:96:45: warning: "/*" within comment [-Wcomment]
REG_TM[0].CNT_L = TIMER_FREQ(sampleFreq);///*10512);///13378);//10512);
C:/users/owner/desktop/gbarunner2/arm7/source/sound.cpp:106:23: warning: "/" within comment [-Wcomment]
// samplesPerBlock = /(((3 * samplesPerBlock + (/(count + 8) & ~0xF;//)) / 4) + 8) & ~0xF;//(u32)(((u64)count * 598261ull + 298685ull) / 597370ull);
dldi.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm7/build/dldi.d -x assembler-with-cpp -g -mthumb-interwork -marm -c /c/users/owner/desktop/gbarunner2/arm7/source/dldi.s -o dldi.o
lock.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm7/build/lock.d -x assembler-with-cpp -g -mthumb-interwork -marm -c /c/users/owner/desktop/gbarunner2/arm7/source/lock.s -o lock.o
irq.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm7/build/irq.d -x assembler-with-cpp -g -mthumb-interwork -marm -c /c/users/owner/desktop/gbarunner2/arm7/source/irq.s -o irq.o
linking gbarunner2.elf
make[1]: Leaving directory '/c/users/owner/desktop/gbarunner2/arm7'
make -C arm9
make[1]: Entering directory '/c/users/owner/desktop/gbarunner2/arm9'
vector.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/vector.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/vector.cpp -o vector.o
fat.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/fat.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/fat.cpp -o fat.o
In file included from C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:4:
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp: In function 'void find_dir_entry(uint32_t, const char*, dir_entry_t*, SEARCH_TYPE)':
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:37:88: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
read_sd_sectors_safe(cur_dir_sector, vram_cd->sd_info.nr_sectors_per_cluster, tmp_buf + 512);
~~~~~~~~^~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/sd_access.h:31:101: note: in definition of macro 'read_sd_sectors_safe'
#define read_sd_sectors_safe(sector,numSectors,buffer) _DLDI_readSectors_ptr((sector),(numSectors),(buffer))
^~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:47:53: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
dir_entry_t dir_entries = (dir_entry_t)(tmp_buf + 512);
~~~~~~~~^~~~~
In file included from C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:4:
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:165:115: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
read_sd_sectors_safe(get_sector_from_cluster(cur_dir_cluster), vram_cd->sd_info.nr_sectors_per_cluster, tmp_buf + 512);
~~~~~~~~^~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/sd_access.h:31:101: note: in definition of macro 'read_sd_sectors_safe'
#define read_sd_sectors_safe(sector,numSectors,buffer) _DLDI_readSectors_ptr((sector),(numSectors),(buffer))
^~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp: In function 'int write_entries_to_sd(const uint8_t, const uint8_t*, int, uint8_t, uint32_t, uint32_t, uint32_t)':
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:344:88: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
read_sd_sectors_safe(cur_dir_sector, vram_cd->sd_info.nr_sectors_per_cluster, tmp_buf + 512);
~~~~~~~~^~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/sd_access.h:31:101: note: in definition of macro 'read_sd_sectors_safe'
#define read_sd_sectors_safe(sector,numSectors,buffer) _DLDI_readSectors_ptr((sector),(numSectors),(buffer))
^~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:350:53: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
dir_entry_t dir_entries = (dir_entry_t)(tmp_buf + 512);
~~~~~~~~^~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:412:115: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
write_sd_sectors_safe(get_sector_from_cluster(cur_cluster), vram_cd->sd_info.nr_sectors_per_cluster, tmp_buf + 512);
~~~~~~~~^~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:420:113: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
write_sd_sectors_safe(get_sector_from_cluster(cur_cluster), vram_cd->sd_info.nr_sectors_per_cluster, tmp_buf + 512);
~~~~~~~~^~~~~
In file included from C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:4:
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:428:111: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
read_sd_sectors_safe(get_sector_from_cluster(cur_cluster), vram_cd->sd_info.nr_sectors_per_cluster, tmp_buf + 512);
~~~~~~~~^~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/sd_access.h:31:101: note: in definition of macro 'read_sd_sectors_safe'
#define read_sd_sectors_safe(sector,numSectors,buffer) _DLDI_readSectors_ptr((sector),(numSectors),(buffer))
^~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp: In function 'uint32_t allocate_clusters(uint32_t, int)':
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:461:48: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
read_sd_sectors_safe(prev_sector, 1, tmp_buf + (buff_pos^512));//_DLDI_readSectors_ptr(cur_sector, 1, tmp_buf + 512);
~~~~~~~~^~~~~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/sd_access.h:31:101: note: in definition of macro 'read_sd_sectors_safe'
#define read_sd_sectors_safe(sector,numSectors,buffer) _DLDI_readSectors_ptr((sector),(numSectors),(buffer))
^~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:468:47: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
read_sd_sectors_safe(cur_sector, 1, tmp_buf + buff_pos);//_DLDI_readSectors_ptr(cur_sector, 1, tmp_buf);
~~~~~~~~^~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/sd_access.h:31:101: note: in definition of macro 'read_sd_sectors_safe'
#define read_sd_sectors_safe(sector,numSectors,buffer) _DLDI_readSectors_ptr((sector),(numSectors),(buffer))
^~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:469:44: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
uint32_t clusters = (uint32_t)(tmp_buf + buff_pos);
~~~~~~~~^~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:492:51: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
uint32_t cluster_ptr = (uint32_t)(tmp_buf + (buff_pos^512));
~~~~~~~~^~~~~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:497:53: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
write_sd_sectors_safe(prev_sector, 1, tmp_buf + (buff_pos^512));
~~~~~~~~^~~~~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/fat.cpp:517:49: warning: pointer of type 'void ' used in arithmetic [-Wpointer-arith]
write_sd_sectors_safe(cur_sector, 1, tmp_buf + buff_pos);
~~~~~~~~^~~~~~~~~~
qsort.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/qsort.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/qsort.cpp -o qsort.o
vramheap.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/vramheap.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp -o vramheap.o
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:31:30: warning: multi-character character constant [-Wmultichar]
while (cur && !(cur->tag == HEAP_TAG_FREE && cur->size >= size)) {
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:48:15: warning: multi-character character constant [-Wmultichar]
block->tag = HEAP_TAG_USED;
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:58:15: warning: multi-character character constant [-Wmultichar]
if(a->tag != HEAP_TAG_FREE || b->tag != HEAP_TAG_FREE)
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:58:42: warning: multi-character character constant [-Wmultichar]
if(a->tag != HEAP_TAG_FREE || b->tag != HEAP_TAG_FREE)
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:82:19: warning: multi-character character constant [-Wmultichar]
if(block->tag != HEAP_TAG_FREE) return NULL;
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:83:40: warning: multi-character character constant [-Wmultichar]
if(block->prev && block->prev->tag == HEAP_TAG_FREE) block = vramheap_mergeblocks(block->prev, block);
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:84:40: warning: multi-character character constant [-Wmultichar]
if(block->next && block->next->tag == HEAP_TAG_FREE) block = vramheap_mergeblocks(block, block->next);
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:98:16: warning: multi-character character constant [-Wmultichar]
block2->tag = HEAP_TAG_FREE;
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:116:22: warning: multi-character character constant [-Wmultichar]
first_block->tag = HEAP_TAG_USED;
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:127:16: warning: multi-character character constant [-Wmultichar]
block->tag = HEAP_TAG_USED;
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:166:15: warning: multi-character character constant [-Wmultichar]
block->tag = HEAP_TAG_FREE;
^~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp: In function 'heap_block_t vramheap_findfreeblock(heap_block_t, int)':
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:31:57: warning: comparison of integer expressions of different signedness: 'uint32_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
while (cur && !(cur->tag == HEAP_TAG_FREE && cur->size >= size)) {
~~~~~~~~~~^~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp: In function 'uint16_t vramheap_realloc(void, int)':
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:139:10: warning: comparison of integer expressions of different signedness: 'int' and 'uint32_t' {aka 'long unsigned int'} [-Wsign-compare]
if(size == block->size)
~~~~~^~~~~~~~~~~~~~
C:/users/owner/desktop/gbarunner2/arm9/source/vramheap.cpp:141:10: warning: comparison of integer expressions of different signedness: 'int' and 'uint32_t' {aka 'long unsigned int'} [-Wsign-compare]
if(size < block->size)
~~~~~^~~~~~~~~~~~~
debugfont.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/debugfont.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/debugfont.cpp -o debugfont.o
string.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/string.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/string.cpp -o string.o
init.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/init.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/init.cpp -o init.o
sd_access.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/sd_access.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/sd_access.cpp -o sd_access.o
C:/users/owner/desktop/gbarunner2/arm9/source/sd_access.cpp:804:194: warning: "/*" within comment [-Wcomment]
read_sd_sectors_safe(get_sector_from_cluster(vram_cd->gba_rom_cluster_table[cluster_index >> (vram_cd->sd_info.cluster_shift - 9)]) + (cluster_index & (vram_cd->sd_info.cluster_mask >> 9)), 1/*vram_cd->sd_info.nr_sectors_per_cluster/, &vram_cd->cluster_cache[block << 9/*vram_cd->sd_info.cluster_shift/]);
C:/users/owner/desktop/gbarunner2/arm9/source/sd_access.cpp:804:272: warning: "/" within comment [-Wcomment]
C:/users/owner/desktop/gbarunner2/arm9/source/sd_access.cpp:914:40: warning: "/" within comment [-Wcomment]
uint32_t left_in_this_cluster = (1 << /*vram_cd->sd_info.cluster_shift/9) - cluster_offset;
C:/users/owner/desktop/gbarunner2/arm9/source/sd_access.cpp:930:58: warning: "/" within comment [-Wcomment]
arm9_memcpy16((uint16_t)dst, (uint16_t*)cluster_data, /*(1 << vram_cd->sd_info.cluster_shift)/512 / 2);
FileBrowser.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/FileBrowser.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/gui/FileBrowser.cpp -o FileBrowser.o
Directory.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/Directory.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/fat/Directory.cpp -o Directory.o
DirectoryEnumerator.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/DirectoryEnumerator.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/fat/DirectoryEnumerator.cpp -o DirectoryEnumerator.o
DirectoryEntry.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/DirectoryEntry.d -g -Wall -O2 -nostdlib -nodefaultlibs -march=armv5te -mtune=arm946e-s -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-tree-loop-distribute-patterns -fno-builtin -fomit-frame-pointer -ffast-math -marm -mthumb-interwork -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -DARM9 -fno-rtti -fno-exceptions -fnon-call-exceptions -c /c/users/owner/desktop/gbarunner2/arm9/source/fat/DirectoryEntry.cpp -o DirectoryEntry.o
sd_access_asm_itcm.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/sd_access_asm_itcm.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/sd_access_asm_itcm.s -o sd_access_asm_itcm.o
setup.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/setup.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/setup.s -o setup.o
dldi_stub.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/dldi_stub.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/dldi_stub.s -o dldi_stub.o
consts.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/consts.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/consts.s -o consts.o
aborthandler_asm.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/aborthandler_asm.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/aborthandler_asm.s -o aborthandler_asm.o
sd_access_asm.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/sd_access_asm.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/sd_access_asm.s -o sd_access_asm.o
vram_code.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/vram_code.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/vram_code.s -o vram_code.o
bios_patches.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/bios_patches.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/bios_patches.s -o bios_patches.o
dtcm_data.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/dtcm_data.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/dtcm_data.s -o dtcm_data.o
timer.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/timer.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/timer.s -o timer.o
handle_address_write.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/handle_address_write.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/handle_address_write.s -o handle_address_write.o
gfx.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/gfx.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/gfx.s -o gfx.o
handle_address_read_table.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/handle_address_read_table.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/handle_address_read_table.s -o handle_address_read_table.o
handle_instructions_thumb.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/handle_instructions_thumb.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/handle_instructions_thumb.s -o handle_instructions_thumb.o
dma.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/dma.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/dma.s -o dma.o
snd.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/snd.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/snd.s -o snd.o
handle_address_read.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/handle_address_read.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/handle_address_read.s -o handle_address_read.o
handle_instructions_arm.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/handle_instructions_arm.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/handle_instructions_arm.s -o handle_instructions_arm.o
irq.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/irq.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/irq.s -o irq.o
handle_address_write_table.s
arm-none-eabi-gcc -MMD -MP -MF /c/users/owner/desktop/gbarunner2/arm9/build/handle_address_write_table.d -x assembler-with-cpp -g -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -I/c/users/owner/desktop/gbarunner2/arm9/include -I/c/users/owner/desktop/gbarunner2/arm9/source -I/opt/devkitpro/libnds/include -I/c/users/owner/desktop/gbarunner2/arm9/build -c /c/users/owner/desktop/gbarunner2/arm9/source/emu/handle_address_write_table.s -o handle_address_write_table.o
linking gbarunner2.elf
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/8.2.0/../../../../arm-none-eabi/bin/ld.exe: address 0x1008054 of C:/users/owner/desktop/gbarunner2/arm9/gbarunner2.elf section .itcm' is not within region
itcm'
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-none-eabi/8.2.0/../../../../arm-none-eabi/bin/ld.exe: address 0x1008054 of C:/users/owner/desktop/gbarunner2/arm9/gbarunner2.elf section .itcm' is not within region
itcm'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [/c/users/owner/desktop/gbarunner2/arm9/Makefile:123: /c/users/owner/desktop/gbarunner2/arm9/gbarunner2.elf] Error 1
make[1]: *** [Makefile:107: build] Error 2
make[1]: Leaving directory '/c/users/owner/desktop/gbarunner2/arm9'
make: *** [Makefile:31: arm9/gbarunner2.elf] Error 2
Please Help. I've run make clean before.
To have proper support for 128kb flash for example, and also to fix the weird stuff where code is copied to stack as thst causes issues with the cache (wario land 4 for example)
was excited to try this out, but all i get is white screens with that message, and, as seems to always be the case for me, no one else seems to have had this issue.
using an r4i on DSL. (also tried it on an SD card via HiyaCFI on a DSiXL but that came up with an entirely different error, and i'd like the flexibility of using it on either console)
Hi there, is there any way I can permanently change the directory (from the default GBA directory at the root of the SD card) to my Roms\Gameboy Advance folder and have it check there instead? Instead of having to change it each time?
The current GUI is shitty. Maybe reuse ui code from youtubeds.
List of things to do:
Settings would be stuff like:
The ingame menu would feature:
The ingame menu might also help in getting past timing deadlocks.
For example for fixing those load multiple with writeback instructions. Usually there are only a few, and they are easy to fix to make the game work.
I am having issues with both Pokemon Sapphire (E) and Pokemon Ruby (E). The screen goes white after the bios intro and I looked on other threads and you said that games that had this error were uncompatible. I double checked on the compatibility list and sure enough these games should be compatible. I tried all the different versions of GBArunner2, specifically the arm7 and arm9 versions including the wramicac versions. Looking for some answers. Thanks in advanced!
Similar to how TWLight menu++/nds-bootstrap has it, i think it makes sense to have it within the gba folder.
I cant seem to get the file browser branch to compile it keeps spitting out an error
this is the cmd window output after i run make
C:\Users\Thomas\Downloads\GBARunner2-file_explorer\GBARunner2-file_explorer>make
make -C arm7
make[1]: Entering directory /c/Users/Thomas/Downloads/GBARunner2-file_explorer/GBARunner2-file_explorer/arm7' make[2]:
/c/Users/Thomas/Downloads/GBARunner2-file_explorer/GBARunner2-file_explorer/arm7/GBARunner2-file_explorer.elf' is up to date.
make[1]: Leaving directory /c/Users/Thomas/Downloads/GBARunner2-file_explorer/GBARunner2-file_explorer/arm7' make -C arm9 make[1]: Entering directory
/c/Users/Thomas/Downloads/GBARunner2-file_explorer/GBARunner2-file_explorer/arm9'
linking GBARunner2-file_explorer.elf
sd_access.o: In function get_folder_contents(vector_&, unsigned long)': c:/Users/Thomas/Downloads/GBARunner2-file_explorer/GBARunner2-file_explorer/arm9/source/sd_access.cpp:258: undefined reference to
memset'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [/c/Users/Thomas/Downloads/GBARunner2-file_explorer/GBARunner2-file_explorer/arm9/GBARunner2-file_explorer.elf] Error 1
make[1]: *** [build] Error 2
make[1]: Leaving directory `/c/Users/Thomas/Downloads/GBARunner2-file_explorer/GBARunner2-file_explorer/arm9'
make: *** [arm9/GBARunner2-file_explorer.elf] Error 2
C:\Users\Thomas\Downloads\GBARunner2-file_explorer\GBARunner2-file_explorer>
To prevent those annoying scratches. It may be a good idea to also resync sound afterwards.
In Rhythm Tengoku, random sound plays on loop in all parts of the game (even the H&S Screen), game unplayable as a result (rhythm game)
In Mother 3, simular sound issues happen during the intro part of the game, but disappear after title. Not tested after this point
A couple of opcodes yield different results on the gba than on the ds. These problems only occur for memory accesses that don't go through the abort handler (although not all edge cases are probably correctly implemented).
Memory mirroring:
Some games use mainly low-register arm instructions. Those can be efficiently handled with self-modified code like is done for thumb code. This requires changes to the start of the abort handler.
Mainly when cascading there are issues when the master timer is set to a slow speed I can't reach with ds timers. In that case the lower bit of the slave timer should be used as top bit for reading the master timer and the slave timer should be shifted.
This gives problems in bibi und tina ferien auf dem Marienhof.
Collecting statistics of which instructions are handled most revealed that ldrsb instructions are usually used about 10 times more often than other instructions (most likely in sound mixers). Often only low registers are used! All this combined so could probably speed things up.
Such that people don't turn off while that's happening.
Mario & Luigi Superstar Saga (polygon star before first bowser battle) and Wario Land 4 (frog switch at end of first level) both rely on some weird timing stuff and will freeze if it's not good enough.
It seems to be running too fast, so adding idle cycles fixes it. This can be done in multiple ways:
mov r0, #0x1000
1:
subs r0, #1
bne 1b
TODO: Find a beter way to fix this
Edit: Rayman 3 seems to be affected by this issue too
As the title, A lot of Sinicization games can't be played.
Yet to be done
Currently only sram is supported, making sram patches a requirement. By supporting all save types this will be solved (and also fixes issues with some games)
I have a 2GB microSD for my old DSONE (the non-i version), which works best with FAT16 formatted.
but GBARunner2 can't read the card with FAT16.
Some roms (notably some homebrew) do not use the vblank irq, which results in nothing appearing on screen, because the capture is not updated. Therefore vblank irqs should always be forced to update capture.
Wasn't really sure how to get in contact. I did have a pm from you on IRC ages ago but never really found a means to contact you again. I'm usually around blitzed IRC channels but it depends a lot on the time (I'm UK based). Would probably help if you used a bouncer or something to stick around for longer. devkitPro forums might be easier.
Anyway, I found this & had a quick attempt to compile it but things are breaking.
I did make some attempts to fix things but there are some design decisions in here that have made some things rather difficult to update.
Custom linkscripts are always going to be problematic tbh - sometimes things need tweaked a bit to work with later tools and using the "standard" ones will tend to "just work"™. I can see why you've gone for an extra vram section in the arm9 code but I haven't delved deep enough to see how much work it would be to, for instance, just build the code for VRAM separately. You're also losing all of the changes we made to sort out having additional binaries loaded in Dsi mode (and of course the DSi mode sd card support).
if there is a way can i help (i dont know programming :( ) i offer as many help as i can . i offer you some testing :o image editting or anything can i help :o i also thank you for all your hard work :) and for bringing this awesome tool :)
Gbarunner2 is included with twilight menu++ , i put bios.bin in root .
I can play some gba game but i can’t play with pokemon emerald pokemon ruby and pokemon saphir. Did someone get a fix?
First the fat table of the save file would be stored in an array. Then a variable is set to 0, which means save clean. Whenever the game writes to the save, this value is set to 1, dirty. On arm7 a timer will issue an irq every 250-500ms. If it sees a 0, nothing happens. If it sees a 1, it will change it in 2 (save pending). While it's 2, the game might still save, setting it back to 1. When it's done, the irq will see 2. It will send a request to the arm9 to save to sd and set the value to 3. On arm9 saving is then handled (from the irq handler) and the value is set back to 0.
To be implemented in the following order:
GBARunner2/arm9/source/sd_access.cpp
Line 578 in f89fac5
Probably some bug related to this
This applies to games like Megaman Battle Network. They setup stacks for all modes destoying the values setup for gbarunner2 to work correctly. Maybe scan for msr opcodes or so and replace the last one (which should return to system or user mode) by a call to a function that fixes the gbarunner2 data. Another option would be to boot the game in user mode and make sure stacks are already setup (and also ensure the user mode stack is set last, otherwise it's being overwritten multiple times and may end up with the wrong value)
By reusing the actual instructions for calculating the address for example. If it could be done it may be faster and save memory
I'm not sure whether or not this is "in scope" for GBARunner2.
If it is, it would be very convenient, since running GBATA means Windows or WINE in Linux / Darwin on OSX (I'm sure GBATA works well there, but the dependency is potentially... "excessive"), in order to get SRAM saving to work. To the best of my knowledge, there is no Linux/OSX native equivalent tool. (But if there is, please feel free to lay my ignorance bare!) I'm fairly certain lots of DS/GBA flashcards (e.g. using the EZFlash 3-in-1) would do this.
If not, I think it's probably still best to have asked, and have the ticket here for posterity; but I'd also be curious as to what the suggested next course of action should be - short of resignation and using Windows/Wine, I mean.
Since I am no longer coding/maintaining gbaemu4ds I wanted to share some tips I have found while at it and I am sure those will be of help to GBARunner2 project.
1#)
GBARunner2: Since 2017 or so I was never able to run Pokémon Emerald (U) again. So I decided to build a "custom" GBARunner2 version having all the latest improvements + my own. But I found the game broke between 2017 - 2018 causing bios intro loops or whitescreens.
Turns out a certain commit broke it (and possibly other games as well)
216734d -> exact commit which breaks pokemon emerald (U)
a61e70e
-> pokemon emerald (U) still works (one commit right before the above one)
Current Environment I have: devkitARM r45 and the same libnds and libfat GBATemp user mentioned here: https://gbatemp.net/threads/gbarunner2.451970/page-75#post-8672889
Also when I added stuff to gbaemu4ds, I found pokemon games to break often when VRAM or IO read / writes were unhandled / omitted or deadlocks when certain load/store memory operations would leave bus conflicts unresolved between different memory such as the VRAM and the EWRAM (at ARM9), causing hangs. That takes me to point 2).
2#
Wario Land 4 freezes:
I enabled PU interrupts for any kind of read / writes at 0x06000000 so I could handle 8 bit writes on ARM9-mode WRAM (I know you can patch SDK memcpy but I still wanted to give it a try), and I was able to reproduce the Wario Land 4 issue where the character gets stuck right before jumping into a portal.
Basically there´s a bus conflict between EWRAM and VRAM when moving data and then a MPU interrupt happens (that is if the MPU steps over the latch signal the VRAM hooks on). If I omit entirely the MPU to watch VRAM writes (of which GBA hypervisor does natively) then the timing deadlock goes away and the game proceeds as normal. I can provide the sources and a commit so you can replicate that by yourself.
edit: Also I think running code from VRAM at ARM9 is likely to cause similar issues.
I'm testing here and got this error for several games and they're showing the same code.
01007364
E3A00405
4000001F
0200A1D0
On a sidenote: This emu is only for DS and DS Lite? I'm testing on a DSi.
Seriously this is amazing, please continue your work on this! This will be remembered as one of the greatest nds homebrews if it's perfected, runs stable, and has a nice gui! Sending virtual hugs :)
Do you think you could make a release section for newbies to just download, copy and test? Not sure how to compile at all is why I ask all. After copying the bios not sure what to do.
Every time I launch gbarunner2 on my n3dsxl via TWLoader i get a red top screen and a white bottom screen with the word fail in the top left corner of the bottom screen.
It copies code to stack and executes it there, which is an issue when using cache. Therefore cache invalidation should be patched in.
I have a list of 210 roms. But for some reason, it only shows 63 of them (up to the letter F).
More info:
I'm using a Fat32 formatted 120Gb SD card on a New Nintendo 3DS XL.
This would help finding the good bios.
Doing this has many advantages:
It seems like some games might accidentally destroy the sub screen oam, which is used for one of 2 two capture buffers, causing flickering. Checking should be performed and the oam be restored if this is the case.
Currently bg3 is used instead of the gba bg2, but this is unnecessary. A hook on bg2 control that fixes some bits would be a better solution. (currently there is no hook at all, so priority bits are invalid, this causes an issue in Contra Advance). Affine transforms are also currently not supported in this mode, but may be hard to get right.
Okay so I was playing Pokemon Ruby at night when I noticed my bottom screen's backlight was still on.
I was wondering if we could turn that off to save a bit of battery or just to extend the backlight's life a little.
when I play this game with gbarunner2,sometimes takes long time through the gate and sometimes black screen when coming out of the navigation room.
Please see the problem through this video I recorded
https://youtu.be/VkV8ceMmrHA
When using 32 kb clusters, this function writes 512 bytes further than is available. It then overflows into save_work. I'm not sure if it actually causes any issues, but it should be fixed either way.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.