diff options
author | Cleverking2003 <30466983+Cleverking2003@users.noreply.github.com> | 2020-06-19 22:27:30 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-19 22:27:30 +0300 |
commit | 53ac396de4098e38a6916e0cc86cbd278a960c4c (patch) | |
tree | dd12868357a74ca72794fc23a1dc90beaba4cf5e /arm9 | |
parent | 41317a2b7625919ebba39c06b5aaf9e3b0800b1d (diff) | |
parent | 12c17948602bf14535c91c530f214b99863e038e (diff) |
Merge branch 'master' into master
Diffstat (limited to 'arm9')
-rw-r--r-- | arm9/Makefile | 1 | ||||
-rw-r--r-- | arm9/arm9.lcf | 2 | ||||
-rw-r--r-- | arm9/asm/scrcmd_4.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_020250A4.s | 12 | ||||
-rw-r--r-- | arm9/asm/unk_02060CCC.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_0206E5B4.s | 12 | ||||
-rw-r--r-- | arm9/asm/unk_02085258.s | 146 | ||||
-rw-r--r-- | arm9/global.inc | 16 | ||||
-rw-r--r-- | arm9/lib/include/OS_alarm.h | 23 | ||||
-rw-r--r-- | arm9/lib/include/OS_mutex.h | 16 | ||||
-rw-r--r-- | arm9/lib/include/OS_tick.h | 13 | ||||
-rw-r--r-- | arm9/lib/include/consts.h | 9 | ||||
-rw-r--r-- | arm9/lib/include/mmap.h | 51 | ||||
-rw-r--r-- | arm9/lib/include/systemWork.h | 7 | ||||
-rw-r--r-- | arm9/lib/src/OS_reset.c | 1 | ||||
-rw-r--r-- | arm9/lib/syscall/_svc_mw.s | 76 | ||||
-rw-r--r-- | arm9/modules/68/asm/module_68.s | 36 | ||||
-rw-r--r-- | arm9/modules/73/asm/module_73.s | 6 | ||||
-rw-r--r-- | arm9/src/nutdata.c | 78 | ||||
-rw-r--r-- | arm9/src/pokemon.c | 2 | ||||
-rw-r--r-- | arm9/src/waza.c | 46 |
21 files changed, 207 insertions, 350 deletions
diff --git a/arm9/Makefile b/arm9/Makefile index 5d8741ba..65f2cc00 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -309,7 +309,6 @@ DUMMY != mkdir -p $(ALL_DIRS) %.pal: ; # Included files -baserom.%: ; %.h: ; %.inc: ; diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 5612df2a..8150b54e 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -400,7 +400,7 @@ SECTIONS { unk_020842D0.o (.text) unk_020842DC.o (.text) unk_020851B8.o (.text) - unk_02085258.o (.text) + nutdata.o (.text) unk_02085338.o (.text) unk_020854E0.o (.text) unk_020859C0.o (.text) diff --git a/arm9/asm/scrcmd_4.s b/arm9/asm/scrcmd_4.s index 078e899f..f8ec8636 100644 --- a/arm9/asm/scrcmd_4.s +++ b/arm9/asm/scrcmd_4.s @@ -790,7 +790,7 @@ FUN_02040D04: ; 0x02040D04 lsl r0, r5, #0x10 lsr r0, r0, #0x10 mov r1, #0x20 - bl FUN_020852E8 + bl GetNutName add r5, r0, #0x0 cmp r4, #0x2 bhs _02040D5A diff --git a/arm9/asm/unk_020250A4.s b/arm9/asm/unk_020250A4.s index 8a0f16b8..76e0e8ce 100644 --- a/arm9/asm/unk_020250A4.s +++ b/arm9/asm/unk_020250A4.s @@ -78,7 +78,7 @@ FUN_02025128: ; 0x02025128 push {r3-r7, lr} sub sp, #0x8 add r7, r0, #0x0 - bl FUN_02085258 + bl OpenNutsDataNarc str r0, [sp, #0x0] add r0, r7, #0x0 mov r1, #0xc0 @@ -90,18 +90,18 @@ _02025142: ldr r0, [sp, #0x0] add r1, r6, #0x0 add r2, r7, #0x0 - bl FUN_02085264 + bl ReadNutDataFromNarc add r4, r0, #0x0 mov r1, #0x3 - bl FUN_02085290 + bl GetNutAttr strb r0, [r5, #0x0] add r0, r4, #0x0 mov r1, #0x4 - bl FUN_02085290 + bl GetNutAttr strb r0, [r5, #0x1] add r0, r4, #0x0 mov r1, #0x2 - bl FUN_02085290 + bl GetNutAttr strb r0, [r5, #0x2] add r0, r4, #0x0 bl FreeToHeap @@ -110,7 +110,7 @@ _02025142: cmp r6, #0x40 blt _02025142 ldr r0, [sp, #0x0] - bl FUN_0208526C + bl CloseNutsDataNarc ldr r0, [sp, #0x4] add sp, #0x8 pop {r3-r7, pc} diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s index 67728262..15021367 100644 --- a/arm9/asm/unk_02060CCC.s +++ b/arm9/asm/unk_02060CCC.s @@ -1535,7 +1535,7 @@ FUN_02061750: ; 0x02061750 sub r0, #0x95 lsl r0, r0, #0x10 lsr r0, r0, #0x10 - bl FUN_020852E8 + bl GetNutName add r4, r0, #0x0 mov r1, #0x1 str r1, [sp, #0x0] diff --git a/arm9/asm/unk_0206E5B4.s b/arm9/asm/unk_0206E5B4.s index 5cba23c1..f7c743f6 100644 --- a/arm9/asm/unk_0206E5B4.s +++ b/arm9/asm/unk_0206E5B4.s @@ -723,21 +723,21 @@ _0206E72C: ldr r1, _0206E75C ; =UNK_020F85B4 lsl r3, r3, #0x3 ldrh r1, [r1, r3] - mov r0, #0xf + mov r0, #0xf ; NARC_ITEMTOOL_ITEMDATA_ITEM_DATA bl AllocAndReadWholeNarcMemberByIdPair pop {r3, pc} _0206E73A: ldr r1, _0206E760 ; =UNK_020F85B4 + 2 lsl r3, r3, #0x3 ldrh r1, [r1, r3] - mov r0, #0x10 + mov r0, #0x10 ; NARC_ITEMTOOL_ITEMDATA_ITEM_ICON bl AllocAndReadWholeNarcMemberByIdPair pop {r3, pc} _0206E748: ldr r1, _0206E764 ; =UNK_020F85B4 + 4 lsl r3, r3, #0x3 ldrh r1, [r1, r3] - mov r0, #0x10 + mov r0, #0x10 ; NARC_ITEMTOOL_ITEMDATA_ITEM_ICON bl AllocAndReadWholeNarcMemberByIdPair pop {r3, pc} _0206E756: @@ -756,7 +756,7 @@ FUN_0206E768: ; 0x0206E768 add r5, r0, #0x0 add r4, r1, #0x0 mov r0, #0x1 - mov r1, #0x1a + mov r1, #0x1a ; NARC_MSGDATA_MSG lsl r2, r2, #0x2 bl NewMsgDataFromNarc add r6, r0, #0x0 @@ -776,7 +776,7 @@ FUN_0206E790: ; 0x0206E790 add r4, r1, #0x0 ldr r2, _0206E7B4 ; =0x00000157 mov r0, #0x1 - mov r1, #0x1a + mov r1, #0x1a ; NARC_MSGDATA_MSG bl NewMsgDataFromNarc add r6, r0, #0x0 add r1, r4, #0x0 @@ -1376,7 +1376,7 @@ FUN_0206EB50: ; 0x0206EB50 mul r1, r0 str r1, [sp, #0x0] mov r1, #0x0 - mov r0, #0xf + mov r0, #0xf ; NARC_ITEMTOOL_ITEMDATA_ITEM_DATA add r2, r4, #0x0 add r3, r1, #0x0 bl AllocAndReadFromNarcMemberByIdPair diff --git a/arm9/asm/unk_02085258.s b/arm9/asm/unk_02085258.s deleted file mode 100644 index ba69aea4..00000000 --- a/arm9/asm/unk_02085258.s +++ /dev/null @@ -1,146 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02085258 -FUN_02085258: ; 0x02085258 - ldr r3, _02085260 ; =NARC_ctor - add r1, r0, #0x0 - mov r0, #0x44 - bx r3 - .balign 4 -_02085260: .word NARC_ctor - - thumb_func_start FUN_02085264 -FUN_02085264: ; 0x02085264 - ldr r3, _02085268 ; =NARC_AllocAndReadWholeMember - bx r3 - .balign 4 -_02085268: .word NARC_AllocAndReadWholeMember - - thumb_func_start FUN_0208526C -FUN_0208526C: ; 0x0208526C - ldr r3, _02085270 ; =NARC_dtor - bx r3 - .balign 4 -_02085270: .word NARC_dtor - - thumb_func_start FUN_02085274 -FUN_02085274: ; 0x02085274 - add r3, r0, #0x0 - add r2, r1, #0x0 - add r1, r3, #0x0 - ldr r3, _02085280 ; =AllocAndReadWholeNarcMemberByIdPair - mov r0, #0x44 - bx r3 - .balign 4 -_02085280: .word AllocAndReadWholeNarcMemberByIdPair - - thumb_func_start FUN_02085284 -FUN_02085284: ; 0x02085284 - ldr r3, _0208528C ; =FUN_02085274 - sub r0, #0x95 - bx r3 - nop -_0208528C: .word FUN_02085274 - - thumb_func_start FUN_02085290 -FUN_02085290: ; 0x02085290 - cmp r1, #0xa - bhi _020852E2 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_020852A0: ; jump table (using 16-bit offset) - .short _020852B6 - _020852A0 - 2; case 0 - .short _020852BA - _020852A0 - 2; case 1 - .short _020852BE - _020852A0 - 2; case 2 - .short _020852C2 - _020852A0 - 2; case 3 - .short _020852C6 - _020852A0 - 2; case 4 - .short _020852CA - _020852A0 - 2; case 5 - .short _020852CE - _020852A0 - 2; case 6 - .short _020852D2 - _020852A0 - 2; case 7 - .short _020852D6 - _020852A0 - 2; case 8 - .short _020852DA - _020852A0 - 2; case 9 - .short _020852DE - _020852A0 - 2; case 10 -_020852B6: - ldrh r0, [r0, #0x0] - bx lr -_020852BA: - ldrb r0, [r0, #0x2] - bx lr -_020852BE: - ldrb r0, [r0, #0x3] - bx lr -_020852C2: - ldrb r0, [r0, #0x4] - bx lr -_020852C6: - ldrb r0, [r0, #0x5] - bx lr -_020852CA: - ldrb r0, [r0, #0x6] - bx lr -_020852CE: - ldrb r0, [r0, #0x7] - bx lr -_020852D2: - ldrb r0, [r0, #0x8] - bx lr -_020852D6: - ldrb r0, [r0, #0x9] - bx lr -_020852DA: - ldrb r0, [r0, #0xa] - bx lr -_020852DE: - ldrb r0, [r0, #0xb] - bx lr -_020852E2: - mov r0, #0x0 - bx lr - .balign 4 - - thumb_func_start FUN_020852E8 -FUN_020852E8: ; 0x020852E8 - push {r3-r5, lr} - ldr r2, _0208530C ; =0x00000175 - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r0, #0x1 - mov r1, #0x1a - bl NewMsgDataFromNarc - add r5, r0, #0x0 - add r1, r4, #0x0 - bl FUN_0200A914 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl DestroyMsgData - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 -_0208530C: .word 0x00000175 - - thumb_func_start FUN_02085310 -FUN_02085310: ; 0x02085310 - push {r3-r5, lr} - mov r2, #0x5d - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r0, #0x1 - mov r1, #0x1a - lsl r2, r2, #0x2 - bl NewMsgDataFromNarc - add r5, r0, #0x0 - add r1, r4, #0x0 - bl FUN_0200A914 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl DestroyMsgData - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 diff --git a/arm9/global.inc b/arm9/global.inc index 810a8074..91b0ca46 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5282,14 +5282,14 @@ .extern FUN_020851F8 .extern FUN_02085224 .extern FUN_0208524C -.extern FUN_02085258 -.extern FUN_02085264 -.extern FUN_0208526C -.extern FUN_02085274 -.extern FUN_02085284 -.extern FUN_02085290 -.extern FUN_020852E8 -.extern FUN_02085310 +.extern OpenNutsDataNarc +.extern ReadNutDataFromNarc +.extern CloseNutsDataNarc +.extern LoadNutDataSingle +.extern LoadNutDataSingleByItemId +.extern GetNutAttr +.extern GetNutName +.extern GetNutDesc .extern FUN_02085338 .extern FUN_020853A8 .extern FUN_020853B0 diff --git a/arm9/lib/include/OS_alarm.h b/arm9/lib/include/OS_alarm.h index a9734d1b..ebdf01ba 100644 --- a/arm9/lib/include/OS_alarm.h +++ b/arm9/lib/include/OS_alarm.h @@ -1,28 +1,13 @@ -#ifndef POKEDIAMOND_OS_ALARM_H -#define POKEDIAMOND_OS_ALARM_H +#ifndef POKEDIAMOND_ARM9_OS_ALARM_H +#define POKEDIAMOND_ARM9_OS_ALARM_H #include "nitro/types.h" #include "OS_thread.h" #include "OS_tick.h" - -typedef void (*OSAlarmHandler) (void *); - -struct OSiAlarm -{ - OSAlarmHandler handler; - void *arg; - - u32 tag; - OSTick fire; - OSAlarm *prev; - OSAlarm *next; - - OSTick period; - OSTick start; -}; +#include "nitro/OS_alarm_shared.h" void OS_CancelAlarm(OSAlarm *alarm); void OS_CreateAlarm(OSAlarm *alarm); void OS_SetAlarm(OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg); -#endif //POKEDIAMOND_OS_ALARM_H +#endif //POKEDIAMOND_ARM9_OS_ALARM_H diff --git a/arm9/lib/include/OS_mutex.h b/arm9/lib/include/OS_mutex.h index 0fc261a4..9da89c69 100644 --- a/arm9/lib/include/OS_mutex.h +++ b/arm9/lib/include/OS_mutex.h @@ -1,16 +1,10 @@ -#ifndef POKEDIAMOND_OS_MUTEX_H -#define POKEDIAMOND_OS_MUTEX_H +#ifndef POKEDIAMOND_ARM9_OS_MUTEX_H +#define POKEDIAMOND_ARM9_OS_MUTEX_H -#include "nitro/types.h" #include "OS_thread.h" - -struct OSMutex { - OSThreadQueue queue; - OSThread *thread; - s32 count; - OSMutexLink link; -}; +#include "OS_context.h" +#include "nitro/OS_mutex_shared.h" void OSi_UnlockAllMutex(OSThread * thread); -#endif //POKEDIAMOND_OS_MUTEX_H +#endif //POKEDIAMOND_ARM9_OS_MUTEX_H diff --git a/arm9/lib/include/OS_tick.h b/arm9/lib/include/OS_tick.h index 3dba9818..59c43b10 100644 --- a/arm9/lib/include/OS_tick.h +++ b/arm9/lib/include/OS_tick.h @@ -1,14 +1,9 @@ -#ifndef POKEDIAMOND_OS_TICK_H -#define POKEDIAMOND_OS_TICK_H +#ifndef POKEDIAMOND_ARM9_OS_TICK_H +#define POKEDIAMOND_ARM9_OS_TICK_H #include "consts.h" #include "OS_timer.h" - -typedef u64 OSTick; - -#define OS_SYSTEM_CLOCK HW_SYSTEM_CLOCK - -#define OS_MilliSecondsToTicks(msec) ((OSTick)(((OS_SYSTEM_CLOCK/1000) * (u64)(msec)) / 64)) +#include "nitro/OS_tick_shared.h" #define OSi_TICK_TIMERCONTROL (REG_OS_TM0CNT_H_E_MASK | REG_OS_TM0CNT_H_I_MASK | OS_TIMER_PRESCALER_64) @@ -18,4 +13,4 @@ static void OSi_CountUpTick(void); OSTick OS_GetTick(void); u16 OS_GetTickLo(void); -#endif //POKEDIAMOND_OS_TICK_H +#endif //POKEDIAMOND_ARM9_OS_TICK_H diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h index a24e9d89..5dd0b150 100644 --- a/arm9/lib/include/consts.h +++ b/arm9/lib/include/consts.h @@ -4,6 +4,7 @@ #include "nitro/consts_shared.h" #include "mmap.h" #include "registers.h" +#include "systemWork.h" #define HW_C6_PR_4KB 0x16 #define HW_C6_PR_8KB 0x18 @@ -27,8 +28,6 @@ #define HW_C6_PR_2GB 0x3c #define HW_C6_PR_4GB 0x3e -#define HW_SYSTEM_CLOCK 33514000 - #define PXI_PROC_ARM7 0x01 #define OSi_CONSOLE_NOT_DETECT 0xffffffff @@ -38,12 +37,6 @@ #define OS_CONSOLE_SIZE_MASK 0x00000003 #define OS_CONSOLE_SIZE_4MB 0x00000001 -#define OS_THREAD_LAUNCHER_PRIORITY 0x10 -#define OS_THREAD_PRIORITY_MIN 0x00 -#define OS_THREAD_PRIORITY_MAX 0x1F - -#define OS_THREAD_SPECIFIC_MAX 0x03 - #define OSi_TCM_REGION_BASE_MASK 0xfffff000 #define OS_IE_V_BLANK (1UL << 0) diff --git a/arm9/lib/include/mmap.h b/arm9/lib/include/mmap.h index 5967695c..12823fa0 100644 --- a/arm9/lib/include/mmap.h +++ b/arm9/lib/include/mmap.h @@ -14,8 +14,6 @@ extern u32 SDK_AUTOLOAD_DTCM_START[]; #define HW_ITCM_SIZE 0x00008000 #define HW_ITCM_END (HW_ITCM + HW_ITCM_SIZE) -#define HW_WRAM 0x037F8000 - #define HW_DTCM ((u32)SDK_AUTOLOAD_DTCM_START) #define HW_DTCM_SIZE 0x00004000 @@ -29,7 +27,6 @@ extern u32 SDK_AUTOLOAD_DTCM_START[]; #define HW_ROM_BASE_OFFSET_BUF (HW_MAIN_MEM + 0x007ffc2c) #define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer #define HW_RED_RESERVED (HW_MAIN_MEM + 0x007ff800) // Some kind of reserved data for shared memory -#define HW_MAIN_MEM_SYSTEM (HW_MAIN_MEM + 0x007ffc00) #define HW_MAIN_MEM_EX_END (HW_MAIN_MEM + HW_MAIN_MEM_EX_SIZE) #define HW_MAIN_MEM_SHARED (HW_MAIN_MEM_EX_END - HW_MAIN_MEM_SHARED_SIZE) #define HW_DTCM_SVC_STACK_END (HW_DTCM + 0x00003fc0) @@ -60,52 +57,4 @@ extern u32 SDK_AUTOLOAD_DTCM_START[]; #define OSi_WRAM_MAIN_ARENA_HI_DEFAULT (HW_WRAM) #define OSi_WRAM_MAIN_ARENA_LO_DEFAULT (HW_WRAM) -#include "OS_thread.h" //not ideal but it's necessary -#include "OS_spinLock.h" - -typedef struct { - u8 bootCheckInfo[0x20]; // 000-01f: 32byte boot check info - u32 resetParameter; // 020-023: 4byte reset parameter - u8 padding5[0x8]; // 024-02c: (8byte) - u32 romBaseOffset; // 02c-02f: 4byte ROM offset of own program - u8 cartridgeModuleInfo[12]; // 030-03b: 12byte cartridge module info - u32 vblankCount; // 03c-03f: 4byte V-Blank Count - u8 wmBootBuf[0x40]; // 040-07f: 64byte WM multiboot buffer - u8 nvramUserInfo[0x100]; // 080-17f: 256bytes NVRAM user info - u8 isd_reserved1[0x20]; // 180-19f: 32bytes ISDebugger reserved - u8 arenaInfo[0x48]; // 1a0-1e7: 72byte Arena information - u8 real_time_clock[8]; // 1e8-1ef: 8bytes RTC - u32 dmaClearBuf[4]; // 1f0-1ff: 16bytes DMA clear information buffer (for ARM9-TEG) - u8 rom_header[0x160]; // 200-35f: 352bytes ROM registration area info storage buffer - u8 isd_reserved2[32]; // 360-37f: 32bytes ISDebugger reserved - u32 pxiSignalParam[2]; // 380-387: 8bytes Param for PXI Signal - u32 pxiHandleChecker[2]; // 388-38f: 8bytes Flag for PXI Command Handler Installed - u32 mic_last_address; // 390-393: 4bytes MIC latest sampling result storage address - u16 mic_sampling_data; // 394-395: 2bytes MIC sampling result - u16 wm_callback_control; // 396-397: 2bytes Parameter for WM callback synchronization - u16 wm_rssi_pool; // 398-399: 2bytes Random number source depends on WM received signal intensity - u8 padding3[2]; // 39a-39b: (2bytes) - u32 component_param; // 39c-39f: 4bytes Parameter for Component synchronization - OSThreadInfo *threadinfo_mainp; // 3a0-3a3: 4bytes Verify that the pointer to ARM9 thread information is initial value 0 - OSThreadInfo *threadinfo_subp; // 3a4-3a7: 4bytes Verify that the pointer to ARM7 thread information is initial value 0 - u16 button_XY; // 3a8-3a9: 2bytes XY button information storage location - u8 touch_panel[4]; // 3aa-3ad: 4bytes Touch Screen information storage location - u16 autoloadSync; // 3ae-3af: 2bytes autoload sync between processors - u32 lockIDFlag_mainp[2]; // 3b0-3b7: 8bytes lockID management flag (ARM9) - u32 lockIDFlag_subp[2]; // 3b8-3bf: 8bytes lockID management flag (ARM7) - struct OSLockWord lock_VRAM_C; // 3c0-3c7: 8bytes C - lock buffer - struct OSLockWord lock_VRAM_D; // 3c8-3cf: 8bytes VRAM-D - lock buffer - struct OSLockWord lock_WRAM_BLOCK0; // 3d0-3d7: 8bytes Block0 - lock buffer - struct OSLockWord lock_WRAM_BLOCK1; // 3d8-3df: 8bytes CPU internal work RAM - Block1 - lock buffer - struct OSLockWord lock_CARD; // 3e0-3e7: 8bytes Game Card - lock buffer - struct OSLockWord lock_CARTRIDGE; // 3e8-3ef: 8bytes DS Pak - lock buffer - struct OSLockWord lock_INIT; // 3f0-3f7: 8bytes Initialization lock buffer - u16 mmem_checker_mainp; // 3f8-3f9: 2bytes MainMomory Size Checker for Main processor - u16 mmem_checker_subp; // 3fa-3fb: 2bytes MainMomory Size Checker for Sub processor - u8 padding4[2]; // 3fc-3fd: (2bytes) - u16 command_area; // 3fe-3ff: 2bytes Command Area -} OSSystemWork; //0x027FFC00 - -#define OS_GetSystemWork() ((OSSystemWork *)HW_MAIN_MEM_SYSTEM) - #endif //POKEDIAMOND_ARM9_MMAP_H
\ No newline at end of file diff --git a/arm9/lib/include/systemWork.h b/arm9/lib/include/systemWork.h new file mode 100644 index 00000000..b7660985 --- /dev/null +++ b/arm9/lib/include/systemWork.h @@ -0,0 +1,7 @@ +#ifndef POKEDIAMOND_ARM9_SYSTEMWORK_H +#define POKEDIAMOND_ARM9_SYSTEMWORK_H + +#include "OS_context.h" +#include "nitro/OS_systemWork_shared.h" + +#endif //POKEDIAMOND_ARM9_SYSTEMWORK_H diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c index f22b0e3c..95238f46 100644 --- a/arm9/lib/src/OS_reset.c +++ b/arm9/lib/src/OS_reset.c @@ -4,6 +4,7 @@ #include "OS_terminate_proc.h" #include "OS_interrupt.h" #include "OS_system.h" +#include "OS_spinLock.h" #include "sections.h" static u16 OSi_IsInitReset = 0; diff --git a/arm9/lib/syscall/_svc_mw.s b/arm9/lib/syscall/_svc_mw.s index c1e36b4b..d449ee58 100644 --- a/arm9/lib/syscall/_svc_mw.s +++ b/arm9/lib/syscall/_svc_mw.s @@ -7,115 +7,115 @@ ; Secure area .space 0x800 - non_word_aligned_thumb_func_start SVC_SoftReset + .global SVC_SoftReset + .thumb SVC_SoftReset: swi 0 bx lr - thumb_func_end SVC_SoftReset - non_word_aligned_thumb_func_start SVC_WaitByLoop + .global SVC_WaitByLoop + .thumb SVC_WaitByLoop: swi 3 bx lr - thumb_func_end SVC_WaitByLoop - non_word_aligned_thumb_func_start SVC_WaitIntr + .global SVC_WaitIntr + .thumb SVC_WaitIntr: mov r2, #0 swi 4 bx lr - thumb_func_end SVC_WaitIntr - non_word_aligned_thumb_func_start SVC_WaitVBlankIntr + .global SVC_WaitVBlankIntr + .thumb SVC_WaitVBlankIntr: mov r2, #0 swi 5 bx lr - thumb_func_end SVC_WaitVBlankIntr - non_word_aligned_thumb_func_start SVC_Halt + .global SVC_Halt + .thumb SVC_Halt: swi 6 bx lr - thumb_func_end SVC_Halt - non_word_aligned_thumb_func_start SVC_Div + .global SVC_Div + .thumb SVC_Div: swi 9 bx lr - thumb_func_end SVC_Div - non_word_aligned_thumb_func_start SVC_DimRem + .global SVC_DivRem + .thumb SVC_DivRem: swi 9 add r0, r1, #0 bx lr - thumb_func_end SVC_DivRem - non_word_aligned_thumb_func_start SVC_CpuSet + .global SVC_CpuSet + .thumb SVC_CpuSet: swi 11 bx lr - thumb_func_end SVC_CpuSet - non_word_aligned_thumb_func_start SVC_CpuFastSet -SVC_CpuFastSet: + .global SVC_CpuSetFast + .thumb +SVC_CpuSetFast: swi 12 bx lr - thumb_func_end SVC_CpuFastSet - non_word_aligned_thumb_func_start SVC_Sqrt + .global SVC_Sqrt + .thumb SVC_Sqrt: swi 13 bx lr - thumb_func_end SVC_Sqrt - non_word_aligned_thumb_func_start SVC_GetCRC16 + .global SVC_GetCRC16 + .thumb SVC_GetCRC16: swi 14 bx lr - thumb_func_end SVC_GetCRC16 - non_word_aligned_thumb_func_start IsMemExpanded -IsMemExpanded: + .global IsMmemExpanded + .thumb +IsMmemExpanded: swi 15 bx lr - thumb_func_end IsMemExpanded - non_word_aligned_thumb_func_start SVC_UnpackBits + .global SVC_UnpackBits + .thumb SVC_UnpackBits: swi 16 bx lr - thumb_func_end SVC_UnpackBits - non_word_aligned_thumb_func_start SVC_UncompressLZ8 + .global SVC_UncompressLZ8 + .thumb SVC_UncompressLZ8: swi 17 bx lr - thumb_func_end SVC_UncompressLZ8 - non_word_aligned_thumb_func_start SVC_UncompressLZ16FromDevice + .global SVC_UncompressLZ16FromDevice + .thumb SVC_UncompressLZ16FromDevice: swi 18 bx lr - thumb_func_end SVC_UncompressLZ16FromDevice - non_word_aligned_thumb_func_start SVC_UncompressHuffmanFromDevice + .global SVC_UncompressHuffmanFromDevice + .thumb SVC_UncompressHuffmanFromDevice: swi 19 bx lr - thumb_func_end SVC_UncompressHuffmanFromDevice - non_word_aligned_thumb_func_start SVC_UncompressRL8 + .global SVC_UncompressRL8 + .thumb SVC_UncompressRL8: swi 20 bx lr - thumb_func_end SVC_UncompressRL8 - non_word_aligned_thumb_func_start SVC_UncompressRL16FromDevice + .global SVC_UncompressRL16FromDevice + .thumb SVC_UncompressRL16FromDevice: swi 21 bx lr - thumb_func_end SVC_UncompressRL16FromDevice .balign 4, 0 ; Don't pad with nop diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s index 08507c53..fb926299 100644 --- a/arm9/modules/68/asm/module_68.s +++ b/arm9/modules/68/asm/module_68.s @@ -56,7 +56,7 @@ MOD68_021D74E0: ; 0x021D74E0 ldr r0, [r5, r0] mov r1, #0x24 ldrb r0, [r0, #8] - bl FUN_02085274 + bl LoadNutDataSingle mov r1, #0x7f lsl r1, r1, #2 str r0, [r5, r1] @@ -720,7 +720,7 @@ MOD68_021D7A18: ; 0x021D7A18 ldr r0, [r5, r0] mov r1, #0x24 ldrb r0, [r0, #8] - bl FUN_020852E8 + bl GetNutName add r5, r0, #0 mov r1, #0 str r1, [sp] @@ -758,7 +758,7 @@ MOD68_021D7AE4: ; 0x021D7AE4 ldr r0, [r4, r0] mov r1, #0x24 ldrb r0, [r0, #8] - bl FUN_02085310 + bl GetNutDesc mov r1, #0 add r4, r0, #0 str r1, [sp] @@ -831,7 +831,7 @@ MOD68_021D7B80: ; 0x021D7B80 lsl r0, r0, #2 ldr r0, [r4, r0] mov r1, #1 - bl FUN_02085290 + bl GetNutAttr add r1, r0, #0 beq _021D7BA4 sub r1, r1, #1 @@ -912,7 +912,7 @@ MOD68_021D7C28: ; 0x021D7C28 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #0 - bl FUN_02085290 + bl GetNutAttr mov r1, #0xfa lsl r1, r1, #2 mul r1, r0 @@ -1381,7 +1381,7 @@ MOD68_021D7F98: ; 0x021D7F98 ldr r0, [r4, r0] mov r1, #0x24 ldrb r0, [r0, #8] - bl FUN_02085274 + bl LoadNutDataSingle mov r1, #0x7f lsl r1, r1, #2 str r0, [r4, r1] @@ -2159,7 +2159,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #5 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 mov r1, #0x65 lsl r1, r1, #2 @@ -2172,7 +2172,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #6 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 ldr r1, _021D8860 ; =0x0000019A lsl r2, r2, #0x18 @@ -2184,7 +2184,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #7 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 ldr r1, _021D8868 ; =0x000001A6 lsl r2, r2, #0x18 @@ -2202,7 +2202,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #9 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 mov r1, #0x6b lsl r1, r1, #2 @@ -2215,7 +2215,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #5 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 ldr r1, _021D8878 ; =0x000001B2 lsl r2, r2, #0x18 @@ -2232,7 +2232,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #8 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 mov r1, #0x6e lsl r1, r1, #2 @@ -2245,7 +2245,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #9 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 mov r1, #0x71 lsl r1, r1, #2 @@ -2263,7 +2263,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #7 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 ldr r1, _021D8898 ; =0x000001D6 lsl r2, r2, #0x18 @@ -2275,7 +2275,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #8 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 mov r1, #0x1d lsl r1, r1, #4 @@ -2294,7 +2294,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #6 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 ldr r1, _021D88A8 ; =0x000001E2 lsl r2, r2, #0x18 @@ -2306,7 +2306,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #7 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 ldr r1, _021D88B0 ; =0x000001EE lsl r2, r2, #0x18 @@ -2318,7 +2318,7 @@ MOD68_021D85F4: ; 0x021D85F4 lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #8 - bl FUN_02085290 + bl GetNutAttr add r2, r0, #0 mov r1, #0x7a lsl r1, r1, #2 diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s index 2ea96e13..030457b3 100644 --- a/arm9/modules/73/asm/module_73.s +++ b/arm9/modules/73/asm/module_73.s @@ -9161,7 +9161,7 @@ _021DBA56: lsl r4, r0, #2 ldr r0, [sp, #0x24] ldr r0, [r0, r4] - bl FUN_02085284 + bl LoadNutDataSingleByItemId mov r3, #0 add r7, r0, #0 add r2, r3, #0 @@ -9196,7 +9196,7 @@ _021DBAA0: _021DBAA4: add r0, r7, #0 add r1, r5, #5 - bl FUN_02085290 + bl GetNutAttr ldr r1, [r4] add r5, r5, #1 add r0, r1, r0 @@ -9205,7 +9205,7 @@ _021DBAA4: blt _021DBAA4 add r0, r7, #0 mov r1, #0xa - bl FUN_02085290 + bl GetNutAttr ldr r1, [sp, #0x20] add r0, r1, r0 str r0, [sp, #0x20] diff --git a/arm9/src/nutdata.c b/arm9/src/nutdata.c new file mode 100644 index 00000000..09542052 --- /dev/null +++ b/arm9/src/nutdata.c @@ -0,0 +1,78 @@ +#include "global.h" +#include "filesystem.h" +#include "itemtool.h" +#include "msg_data.h" + +#pragma thumb on + +NARC * OpenNutsDataNarc(u32 heap_id) +{ + return NARC_ctor(NARC_ITEMTOOL_ITEMDATA_NUTS_DATA, heap_id); +} + +struct NutData * ReadNutDataFromNarc(NARC * narc, u32 berry_idx, u32 heap_id) +{ + return NARC_AllocAndReadWholeMember(narc, berry_idx, heap_id); +} + +void CloseNutsDataNarc(NARC * narc) +{ + NARC_dtor(narc); +} + +struct NutData * LoadNutDataSingle(u32 berry_idx, u32 heap_id) +{ + return AllocAndReadWholeNarcMemberByIdPair(NARC_ITEMTOOL_ITEMDATA_NUTS_DATA, berry_idx, heap_id); +} + +struct NutData * LoadNutDataSingleByItemId(u32 item_id, u32 heap_id) +{ + return LoadNutDataSingle(item_id - FIRST_BERRY_IDX, heap_id); +} + +u32 GetNutAttr(struct NutData * nut, u32 attr) +{ + switch (attr) + { + case 0: + return nut->unk0; + case 1: + return nut->unk2; + case 2: + return nut->unk3; + case 3: + return nut->unk4; + case 4: + return nut->unk5; + case 5: + return nut->unk6; + case 6: + return nut->unk7; + case 7: + return nut->unk8; + case 8: + return nut->unk9; + case 9: + return nut->unkA; + case 10: + return nut->unkB; + default: + return 0; + } +} + +u16 * GetNutName(u32 berry_idx, u32 heap_id) +{ + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 373, heap_id); + u16 * ret = FUN_0200A914(msgData, berry_idx); + DestroyMsgData(msgData); + return ret; +} + +u16 * GetNutDesc(u32 berry_idx, u32 heap_id) +{ + struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 372, heap_id); + u16 * ret = FUN_0200A914(msgData, berry_idx); + DestroyMsgData(msgData); + return ret; +} diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 9bd9764d..8df597a6 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -2859,7 +2859,7 @@ void FUN_02069718(struct BoxPokemon * boxmon, u16 move) } moves[3] = move; - pp[3] = (u8)GetWazaAttr(move, 5); + pp[3] = (u8)GetWazaAttr(move, MOVEATTR_PP); ppUp[3] = 0; for (i = 0; i < 4; i++) diff --git a/arm9/src/waza.c b/arm9/src/waza.c index 4b505482..f394fedd 100644 --- a/arm9/src/waza.c +++ b/arm9/src/waza.c @@ -15,7 +15,7 @@ void LoadAllWazaTbl(struct WazaTbl * dest) ReadFromNarcMemberByIdPair(dest, NARC_POKETOOL_WAZA_WAZA_TBL, 0, 0, (NUM_MOVES + 1) * sizeof(struct WazaTbl)); } -u32 GetWazaAttr(u16 waza, u32 attr) +u32 GetWazaAttr(u16 waza, MoveAttr attr) { struct WazaTbl wazaTbl; LoadWazaEntry(waza, &wazaTbl); @@ -27,38 +27,40 @@ u8 WazaGetMaxPp(u16 waza, u8 ppUp) u8 pp; if (ppUp > 3) ppUp = 3; - pp = (u8)GetWazaAttr(waza, 5); + pp = (u8)GetWazaAttr(waza, MOVEATTR_PP); return (u8)(pp + (pp * 20 * ppUp) / 100); } -u32 GetAttrFromWazaTbl(struct WazaTbl * wazaTbl, u32 attr) +u32 GetAttrFromWazaTbl(struct WazaTbl * wazaTbl, MoveAttr attr) { switch (attr) { - case 0: - return wazaTbl->unk0; - case 1: + case MOVEATTR_EFFECT: + return wazaTbl->effect; + case MOVEATTR_UNK1: return wazaTbl->unk2; - case 2: - return wazaTbl->unk3; - case 3: - return wazaTbl->unk4; - case 4: - return wazaTbl->unk5; - case 5: + case MOVEATTR_POWER: + return wazaTbl->power; + case MOVEATTR_TYPE: + return wazaTbl->type; + case MOVEATTR_ACCURACY: + return wazaTbl->accuracy; + case MOVEATTR_PP: return wazaTbl->pp; - case 6: - return wazaTbl->unk7; - case 7: + case MOVEATTR_EFFECT_CHANCE: + return wazaTbl->effectChance; + case MOVEATTR_UNK7: return wazaTbl->unk8; - case 8: - return wazaTbl->unkA; - case 9: + case MOVEATTR_PRIORTY: + return wazaTbl->priority; + case MOVEATTR_UNK9: return wazaTbl->unkB; - case 10: + case MOVEATTR_UNK10: return wazaTbl->unkC; - case 11: - return wazaTbl->unkD; + case MOVEATTR_CONTEST_TYPE: + return wazaTbl->contestType; + default: + return (u32)wazaTbl; } } |