mirror of
https://github.com/ApacheThunder/nrioTool.git
synced 2025-06-20 20:15:33 -04:00

* No longer requires modified libnds library for 32KB DLDI support. * GM9Nrio now included as a boot option in Utility menu.
89 lines
2.2 KiB
C
89 lines
2.2 KiB
C
/*
|
|
NitroHax -- Cheat tool for the Nintendo DS
|
|
Copyright (C) 2008 Michael "Chishm" Chisholm
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef _COMMON_H
|
|
#define _COMMON_H
|
|
|
|
#include <nds/dma.h>
|
|
#include <nds/ipc.h>
|
|
#include <stdlib.h>
|
|
|
|
#define resetCpu() \
|
|
__asm volatile("swi 0x000000")
|
|
|
|
typedef struct sLauncherSettings { u32 cachedChipID; u16 language; u16 allowSD; unsigned long fileCluster; } tLauncherSettings;
|
|
|
|
extern volatile tLauncherSettings* tmpData;
|
|
extern volatile u32 arm9_errorCode;
|
|
|
|
enum ERROR_CODES {
|
|
ERR_NONE = 0x00,
|
|
ERR_STS_CLR_MEM = 0x01,
|
|
ERR_STS_LOAD_BIN = 0x02,
|
|
ERR_STS_HOOK_BIN = 0x03,
|
|
ERR_STS_START = 0x04,
|
|
// initCard error codes:
|
|
ERR_SDINIT = 0x11,
|
|
ERR_FILELOAD = 0x12,
|
|
ERR_STS_STARTBIN = 0x21
|
|
};
|
|
|
|
// Values fixed so they can be shared with ASM code
|
|
enum ARM9_STATE {
|
|
ARM9_BOOT = 0,
|
|
ARM9_START = 1,
|
|
ARM9_RESET = 2,
|
|
ARM9_READY = 3,
|
|
ARM9_MEMCLR = 4
|
|
};
|
|
|
|
enum ARM7_STATE {
|
|
ARM7_BOOT = 0,
|
|
ARM7_START = 1,
|
|
ARM7_RESET = 2,
|
|
ARM7_READY = 3,
|
|
ARM7_MEMCLR = 4,
|
|
ARM7_LOADBIN = 5,
|
|
ARM7_HOOKBIN = 6,
|
|
ARM7_BOOTBIN = 7,
|
|
ARM7_ERR = 8
|
|
};
|
|
|
|
static inline void dmaFill(const void* src, void* dest, uint32 size) {
|
|
DMA_SRC(3) = (uint32)src;
|
|
DMA_DEST(3) = (uint32)dest;
|
|
DMA_CR(3) = DMA_COPY_WORDS | DMA_SRC_FIX | (size>>2);
|
|
while(DMA_CR(3) & DMA_BUSY);
|
|
}
|
|
|
|
static inline void copyLoop (u32* dest, const u32* src, size_t size) {
|
|
do { *dest++ = *src++; } while (size -= 4);
|
|
}
|
|
|
|
static inline void ipcSendState(uint8_t state) {
|
|
REG_IPC_SYNC = (state & 0x0f) << 8;
|
|
}
|
|
|
|
static inline uint8_t ipcRecvState(void) {
|
|
return (uint8_t)(REG_IPC_SYNC & 0x0f);
|
|
}
|
|
|
|
|
|
#endif // _COMMON_H
|
|
|