mirror of
https://github.com/ApacheThunder/NTR_Launcher.git
synced 2025-06-18 19:15:40 -04:00

* Stage2 launcher UI added. This is a heavily modified HBMenu with ability to launch carts! This menu can be used to boot a bootloader NDS file for flascharts that the direct cart launcher fails to boot. * New audio files added for new menu. * HBMenu UI loaded by default if booted with no cart inserted. * INI file folder now located in NTR_Launcher folder instead. A default ini file from NitroFS (if mount of nitrofs succeeds) will be copied to SD if one is not present. * Stage2 launchers are expected to be in NTR Launcehr folder though you can navigate to any folder you want in the UI so stage2 launchers aren't the only thing this can be used for. You can also use this as a means of booting homebrew off SD in NTR mode.
69 lines
1.8 KiB
C
69 lines
1.8 KiB
C
#define ARM9
|
|
#undef ARM7
|
|
|
|
#include <nds/ndstypes.h>
|
|
#include <nds/dma.h>
|
|
#include <nds/system.h>
|
|
#include <nds/interrupts.h>
|
|
#include <nds/timers.h>
|
|
|
|
#include <nds/memory.h>
|
|
#include <nds/arm9/video.h>
|
|
#include <nds/arm9/input.h>
|
|
|
|
#include "boot.h"
|
|
|
|
/*-------------------------------------------------------------------------
|
|
resetMemory2_ARM9
|
|
Clears the ARM9's DMA channels and resets video memory
|
|
Written by Darkain.
|
|
Modified by Chishm:
|
|
* Changed MultiNDS specific stuff
|
|
--------------------------------------------------------------------------*/
|
|
void __attribute__ ((long_call)) __attribute__((naked)) __attribute__((noreturn)) resetMemory2_ARM9 (void) {
|
|
register int i;
|
|
|
|
//clear out ARM9 DMA channels
|
|
for (i=0; i<4; i++) {
|
|
DMA_CR(i) = 0;
|
|
DMA_SRC(i) = 0;
|
|
DMA_DEST(i) = 0;
|
|
TIMER_CR(i) = 0;
|
|
TIMER_DATA(i) = 0;
|
|
}
|
|
|
|
//set shared ram to ARM7
|
|
WRAM_CR = 0x03;
|
|
|
|
// Return to passme loop
|
|
*((vu32*)0x02FFFE04) = (u32)0xE59FF018; // ldr pc, 0x02FFFE24
|
|
*((vu32*)0x02FFFE24) = (u32)0x02FFFE04; // Set ARM9 Loop address
|
|
|
|
asm volatile(
|
|
"\tbx %0\n"
|
|
: : "r" (0x02FFFE04)
|
|
);
|
|
while(1);
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------
|
|
startBinary_ARM9
|
|
Jumps to the ARM9 NDS binary in sync with the display and ARM7
|
|
Written by Darkain.
|
|
Modified by Chishm:
|
|
* Removed MultiNDS specific stuff
|
|
--------------------------------------------------------------------------*/
|
|
void __attribute__ ((long_call)) __attribute__((noreturn)) __attribute__((naked)) startBinary_ARM9 (void) {
|
|
REG_IME=0;
|
|
REG_EXMEMCNT = 0xE880;
|
|
// set ARM9 load address to 0 and wait for it to change again
|
|
ARM9_START_FLAG = 0;
|
|
while(REG_VCOUNT!=191);
|
|
while(REG_VCOUNT==191);
|
|
while ( ARM9_START_FLAG != 1 );
|
|
VoidFn arm9code = *(VoidFn*)(0x2FFFE24);
|
|
arm9code();
|
|
while(1);
|
|
}
|
|
|