From c4eb9dae7fa44d5e1b961be07d7771cc5ed78c89 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 18 Sep 2020 18:52:33 +0100 Subject: some itemtool images --- files/itemtool/itemdata/item_icon/.gitignore | 18 +++++++++++++++ files/itemtool/itemdata/item_icon/narc_0148.NCGR | Bin 560 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0148.png | Bin 0 -> 280 bytes files/itemtool/itemdata/item_icon/narc_0149.NCLR | Bin 552 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0150.NCGR | Bin 560 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0150.png | Bin 0 -> 280 bytes files/itemtool/itemdata/item_icon/narc_0151.NCLR | Bin 552 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0152.NCGR | Bin 560 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0152.png | Bin 0 -> 259 bytes files/itemtool/itemdata/item_icon/narc_0153.NCLR | Bin 552 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0154.NCGR | Bin 560 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0154.png | Bin 0 -> 277 bytes files/itemtool/itemdata/item_icon/narc_0155.NCLR | Bin 552 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0156.NCGR | Bin 560 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0156.png | Bin 0 -> 290 bytes files/itemtool/itemdata/item_icon/narc_0157.NCLR | Bin 552 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0158.NCGR | Bin 560 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0158.png | Bin 0 -> 243 bytes files/itemtool/itemdata/item_icon/narc_0159.NCLR | Bin 552 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0160.NCGR | Bin 560 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0160.png | Bin 0 -> 273 bytes files/itemtool/itemdata/item_icon/narc_0161.NCLR | Bin 552 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0162.NCGR | Bin 560 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0162.png | Bin 0 -> 260 bytes files/itemtool/itemdata/item_icon/narc_0163.NCLR | Bin 552 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0164.NCGR | Bin 560 -> 0 bytes files/itemtool/itemdata/item_icon/narc_0164.png | Bin 0 -> 323 bytes files/itemtool/itemdata/item_icon/narc_0165.NCLR | Bin 552 -> 0 bytes filesystem.mk | 20 ++++++++++++++++- graphics_rules.mk | 27 +++++++++++++++++++++++ 30 files changed, 64 insertions(+), 1 deletion(-) delete mode 100644 files/itemtool/itemdata/item_icon/narc_0148.NCGR create mode 100644 files/itemtool/itemdata/item_icon/narc_0148.png delete mode 100644 files/itemtool/itemdata/item_icon/narc_0149.NCLR delete mode 100644 files/itemtool/itemdata/item_icon/narc_0150.NCGR create mode 100644 files/itemtool/itemdata/item_icon/narc_0150.png delete mode 100644 files/itemtool/itemdata/item_icon/narc_0151.NCLR delete mode 100644 files/itemtool/itemdata/item_icon/narc_0152.NCGR create mode 100644 files/itemtool/itemdata/item_icon/narc_0152.png delete mode 100644 files/itemtool/itemdata/item_icon/narc_0153.NCLR delete mode 100644 files/itemtool/itemdata/item_icon/narc_0154.NCGR create mode 100644 files/itemtool/itemdata/item_icon/narc_0154.png delete mode 100644 files/itemtool/itemdata/item_icon/narc_0155.NCLR delete mode 100644 files/itemtool/itemdata/item_icon/narc_0156.NCGR create mode 100644 files/itemtool/itemdata/item_icon/narc_0156.png delete mode 100644 files/itemtool/itemdata/item_icon/narc_0157.NCLR delete mode 100644 files/itemtool/itemdata/item_icon/narc_0158.NCGR create mode 100644 files/itemtool/itemdata/item_icon/narc_0158.png delete mode 100644 files/itemtool/itemdata/item_icon/narc_0159.NCLR delete mode 100644 files/itemtool/itemdata/item_icon/narc_0160.NCGR create mode 100644 files/itemtool/itemdata/item_icon/narc_0160.png delete mode 100644 files/itemtool/itemdata/item_icon/narc_0161.NCLR delete mode 100644 files/itemtool/itemdata/item_icon/narc_0162.NCGR create mode 100644 files/itemtool/itemdata/item_icon/narc_0162.png delete mode 100644 files/itemtool/itemdata/item_icon/narc_0163.NCLR delete mode 100644 files/itemtool/itemdata/item_icon/narc_0164.NCGR create mode 100644 files/itemtool/itemdata/item_icon/narc_0164.png delete mode 100644 files/itemtool/itemdata/item_icon/narc_0165.NCLR diff --git a/files/itemtool/itemdata/item_icon/.gitignore b/files/itemtool/itemdata/item_icon/.gitignore index 5f446a70..190832e8 100644 --- a/files/itemtool/itemdata/item_icon/.gitignore +++ b/files/itemtool/itemdata/item_icon/.gitignore @@ -144,3 +144,21 @@ narc_0144.NCGR narc_0144.NCLR narc_0146.NCGR narc_0146.NCLR +narc_0148.NCGR +narc_0148.NCLR +narc_0150.NCGR +narc_0150.NCLR +narc_0152.NCGR +narc_0152.NCLR +narc_0154.NCGR +narc_0154.NCLR +narc_0156.NCGR +narc_0156.NCLR +narc_0158.NCGR +narc_0158.NCLR +narc_0160.NCGR +narc_0160.NCLR +narc_0162.NCGR +narc_0162.NCLR +narc_0164.NCGR +narc_0164.NCLR diff --git a/files/itemtool/itemdata/item_icon/narc_0148.NCGR b/files/itemtool/itemdata/item_icon/narc_0148.NCGR deleted file mode 100644 index fb3df5f1..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0148.NCGR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0148.png b/files/itemtool/itemdata/item_icon/narc_0148.png new file mode 100644 index 00000000..c7e82654 Binary files /dev/null and b/files/itemtool/itemdata/item_icon/narc_0148.png differ diff --git a/files/itemtool/itemdata/item_icon/narc_0149.NCLR b/files/itemtool/itemdata/item_icon/narc_0149.NCLR deleted file mode 100644 index 29d2c57f..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0149.NCLR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0150.NCGR b/files/itemtool/itemdata/item_icon/narc_0150.NCGR deleted file mode 100644 index 6f16aad9..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0150.NCGR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0150.png b/files/itemtool/itemdata/item_icon/narc_0150.png new file mode 100644 index 00000000..07232e02 Binary files /dev/null and b/files/itemtool/itemdata/item_icon/narc_0150.png differ diff --git a/files/itemtool/itemdata/item_icon/narc_0151.NCLR b/files/itemtool/itemdata/item_icon/narc_0151.NCLR deleted file mode 100644 index 2f63520e..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0151.NCLR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0152.NCGR b/files/itemtool/itemdata/item_icon/narc_0152.NCGR deleted file mode 100644 index bd6f7920..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0152.NCGR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0152.png b/files/itemtool/itemdata/item_icon/narc_0152.png new file mode 100644 index 00000000..6eedd513 Binary files /dev/null and b/files/itemtool/itemdata/item_icon/narc_0152.png differ diff --git a/files/itemtool/itemdata/item_icon/narc_0153.NCLR b/files/itemtool/itemdata/item_icon/narc_0153.NCLR deleted file mode 100644 index afde875c..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0153.NCLR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0154.NCGR b/files/itemtool/itemdata/item_icon/narc_0154.NCGR deleted file mode 100644 index 91dcfde9..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0154.NCGR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0154.png b/files/itemtool/itemdata/item_icon/narc_0154.png new file mode 100644 index 00000000..53c93d6f Binary files /dev/null and b/files/itemtool/itemdata/item_icon/narc_0154.png differ diff --git a/files/itemtool/itemdata/item_icon/narc_0155.NCLR b/files/itemtool/itemdata/item_icon/narc_0155.NCLR deleted file mode 100644 index eeb4079f..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0155.NCLR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0156.NCGR b/files/itemtool/itemdata/item_icon/narc_0156.NCGR deleted file mode 100644 index 97aff7ce..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0156.NCGR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0156.png b/files/itemtool/itemdata/item_icon/narc_0156.png new file mode 100644 index 00000000..f1ddf5c6 Binary files /dev/null and b/files/itemtool/itemdata/item_icon/narc_0156.png differ diff --git a/files/itemtool/itemdata/item_icon/narc_0157.NCLR b/files/itemtool/itemdata/item_icon/narc_0157.NCLR deleted file mode 100644 index 1d75bf34..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0157.NCLR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0158.NCGR b/files/itemtool/itemdata/item_icon/narc_0158.NCGR deleted file mode 100644 index 6bc815f9..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0158.NCGR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0158.png b/files/itemtool/itemdata/item_icon/narc_0158.png new file mode 100644 index 00000000..fd6891e8 Binary files /dev/null and b/files/itemtool/itemdata/item_icon/narc_0158.png differ diff --git a/files/itemtool/itemdata/item_icon/narc_0159.NCLR b/files/itemtool/itemdata/item_icon/narc_0159.NCLR deleted file mode 100644 index 863d1893..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0159.NCLR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0160.NCGR b/files/itemtool/itemdata/item_icon/narc_0160.NCGR deleted file mode 100644 index 13b9c0b7..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0160.NCGR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0160.png b/files/itemtool/itemdata/item_icon/narc_0160.png new file mode 100644 index 00000000..e26c993c Binary files /dev/null and b/files/itemtool/itemdata/item_icon/narc_0160.png differ diff --git a/files/itemtool/itemdata/item_icon/narc_0161.NCLR b/files/itemtool/itemdata/item_icon/narc_0161.NCLR deleted file mode 100644 index ae173567..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0161.NCLR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0162.NCGR b/files/itemtool/itemdata/item_icon/narc_0162.NCGR deleted file mode 100644 index a49fbbca..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0162.NCGR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0162.png b/files/itemtool/itemdata/item_icon/narc_0162.png new file mode 100644 index 00000000..2a9f506d Binary files /dev/null and b/files/itemtool/itemdata/item_icon/narc_0162.png differ diff --git a/files/itemtool/itemdata/item_icon/narc_0163.NCLR b/files/itemtool/itemdata/item_icon/narc_0163.NCLR deleted file mode 100644 index 48348a5c..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0163.NCLR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0164.NCGR b/files/itemtool/itemdata/item_icon/narc_0164.NCGR deleted file mode 100644 index 8450af19..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0164.NCGR and /dev/null differ diff --git a/files/itemtool/itemdata/item_icon/narc_0164.png b/files/itemtool/itemdata/item_icon/narc_0164.png new file mode 100644 index 00000000..a948310a Binary files /dev/null and b/files/itemtool/itemdata/item_icon/narc_0164.png differ diff --git a/files/itemtool/itemdata/item_icon/narc_0165.NCLR b/files/itemtool/itemdata/item_icon/narc_0165.NCLR deleted file mode 100644 index 58db9595..00000000 Binary files a/files/itemtool/itemdata/item_icon/narc_0165.NCLR and /dev/null differ diff --git a/filesystem.mk b/filesystem.mk index ec0c9c10..77650c5b 100644 --- a/filesystem.mk +++ b/filesystem.mk @@ -1720,7 +1720,25 @@ files/itemtool/itemdata/item_icon.narc: \ files/itemtool/itemdata/item_icon/narc_0144.NCGR \ files/itemtool/itemdata/item_icon/narc_0144.NCLR \ files/itemtool/itemdata/item_icon/narc_0146.NCGR \ - files/itemtool/itemdata/item_icon/narc_0146.NCLR + files/itemtool/itemdata/item_icon/narc_0146.NCLR \ + files/itemtool/itemdata/item_icon/narc_0148.NCGR \ + files/itemtool/itemdata/item_icon/narc_0148.NCLR \ + files/itemtool/itemdata/item_icon/narc_0150.NCGR \ + files/itemtool/itemdata/item_icon/narc_0150.NCLR \ + files/itemtool/itemdata/item_icon/narc_0152.NCGR \ + files/itemtool/itemdata/item_icon/narc_0152.NCLR \ + files/itemtool/itemdata/item_icon/narc_0154.NCGR \ + files/itemtool/itemdata/item_icon/narc_0154.NCLR \ + files/itemtool/itemdata/item_icon/narc_0156.NCGR \ + files/itemtool/itemdata/item_icon/narc_0156.NCLR \ + files/itemtool/itemdata/item_icon/narc_0158.NCGR \ + files/itemtool/itemdata/item_icon/narc_0158.NCLR \ + files/itemtool/itemdata/item_icon/narc_0160.NCGR \ + files/itemtool/itemdata/item_icon/narc_0160.NCLR \ + files/itemtool/itemdata/item_icon/narc_0162.NCGR \ + files/itemtool/itemdata/item_icon/narc_0162.NCLR \ + files/itemtool/itemdata/item_icon/narc_0164.NCGR \ + files/itemtool/itemdata/item_icon/narc_0164.NCLR files/application/custom_ball/data/cb_data.narc: \ diff --git a/graphics_rules.mk b/graphics_rules.mk index 89c0397c..22b9152c 100644 --- a/graphics_rules.mk +++ b/graphics_rules.mk @@ -67,6 +67,15 @@ CLOBBER_SIZE_VERSION101_NCGR_FILES := files/graphic/bag_gra/narc_0002.NCGR \ files/itemtool/itemdata/item_icon/narc_0142.NCGR \ files/itemtool/itemdata/item_icon/narc_0144.NCGR \ files/itemtool/itemdata/item_icon/narc_0146.NCGR \ + files/itemtool/itemdata/item_icon/narc_0148.NCGR \ + files/itemtool/itemdata/item_icon/narc_0150.NCGR \ + files/itemtool/itemdata/item_icon/narc_0152.NCGR \ + files/itemtool/itemdata/item_icon/narc_0154.NCGR \ + files/itemtool/itemdata/item_icon/narc_0156.NCGR \ + files/itemtool/itemdata/item_icon/narc_0158.NCGR \ + files/itemtool/itemdata/item_icon/narc_0160.NCGR \ + files/itemtool/itemdata/item_icon/narc_0162.NCGR \ + files/itemtool/itemdata/item_icon/narc_0164.NCGR \ files/poketool/icongra/poke_icon/narc_0007.NCGR \ files/poketool/icongra/poke_icon/narc_0008.NCGR \ files/poketool/icongra/poke_icon/narc_0009.NCGR \ @@ -437,6 +446,15 @@ NCGR_CLEAN_LIST := files/data/cell0.NCGR \ files/itemtool/itemdata/item_icon/narc_0142.NCGR \ files/itemtool/itemdata/item_icon/narc_0144.NCGR \ files/itemtool/itemdata/item_icon/narc_0146.NCGR \ + files/itemtool/itemdata/item_icon/narc_0148.NCGR \ + files/itemtool/itemdata/item_icon/narc_0150.NCGR \ + files/itemtool/itemdata/item_icon/narc_0152.NCGR \ + files/itemtool/itemdata/item_icon/narc_0154.NCGR \ + files/itemtool/itemdata/item_icon/narc_0156.NCGR \ + files/itemtool/itemdata/item_icon/narc_0158.NCGR \ + files/itemtool/itemdata/item_icon/narc_0160.NCGR \ + files/itemtool/itemdata/item_icon/narc_0162.NCGR \ + files/itemtool/itemdata/item_icon/narc_0164.NCGR \ files/poketool/icongra/poke_icon/narc_0007.NCGR \ files/poketool/icongra/poke_icon/narc_0008.NCGR \ files/poketool/icongra/poke_icon/narc_0009.NCGR \ @@ -671,6 +689,15 @@ NCLR_CLEAN_LIST := files/data/cell0.NCLR \ files/itemtool/itemdata/item_icon/narc_0142.NCLR \ files/itemtool/itemdata/item_icon/narc_0144.NCLR \ files/itemtool/itemdata/item_icon/narc_0146.NCLR \ + files/itemtool/itemdata/item_icon/narc_0148.NCLR \ + files/itemtool/itemdata/item_icon/narc_0150.NCLR \ + files/itemtool/itemdata/item_icon/narc_0152.NCLR \ + files/itemtool/itemdata/item_icon/narc_0154.NCLR \ + files/itemtool/itemdata/item_icon/narc_0156.NCLR \ + files/itemtool/itemdata/item_icon/narc_0158.NCLR \ + files/itemtool/itemdata/item_icon/narc_0160.NCLR \ + files/itemtool/itemdata/item_icon/narc_0162.NCLR \ + files/itemtool/itemdata/item_icon/narc_0164.NCLR \ files/poketool/icongra/poke_icon/narc_0000.NCLR \ files/poketool/pokegra/pokegra/narc_0010.NCLR \ files/poketool/pokegra/pokegra/narc_0011.NCLR \ -- cgit v1.2.3 From abad1ad02bc4933142219b8f463ffbd69052299a Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 19 Sep 2020 14:22:50 +0100 Subject: arm7 OS_context --- arm7/asm/OS_context.s | 65 ----------------------------------- arm7/lib/include/OS_context.h | 6 ++-- arm7/lib/src/OS_context.c | 79 +++++++++++++++++++++++++++++++++++++++++++ arm9/lib/include/OS_context.h | 10 +++--- 4 files changed, 87 insertions(+), 73 deletions(-) delete mode 100644 arm7/asm/OS_context.s create mode 100644 arm7/lib/src/OS_context.c diff --git a/arm7/asm/OS_context.s b/arm7/asm/OS_context.s deleted file mode 100644 index 21479b1f..00000000 --- a/arm7/asm/OS_context.s +++ /dev/null @@ -1,65 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start OS_InitContext -OS_InitContext: ; 0x037F9740 - add r1, r1, #4 - str r1, [r0, #64] ; 0x40 - str r2, [r0, #68] ; 0x44 - sub r2, r2, #64 ; 0x40 - tst r2, #4 - subne r2, r2, #4 - str r2, [r0, #56] ; 0x38 - ands r1, r1, #1 - movne r1, #63 ; 0x3f - moveq r1, #31 - str r1, [r0] - mov r1, #0 - str r1, [r0, #4] - str r1, [r0, #8] - str r1, [r0, #12] - str r1, [r0, #16] - str r1, [r0, #20] - str r1, [r0, #24] - str r1, [r0, #28] - str r1, [r0, #32] - str r1, [r0, #36] ; 0x24 - str r1, [r0, #40] ; 0x28 - str r1, [r0, #44] ; 0x2c - str r1, [r0, #48] ; 0x30 - str r1, [r0, #52] ; 0x34 - str r1, [r0, #60] ; 0x3c - bx lr - - arm_func_start OS_SaveContext -OS_SaveContext: ; 0x037F97AC - add r1, r0, #0 - mrs r2, CPSR - str r2, [r1], #4 - mov r0, #211 ; 0xd3 - msr CPSR_c, r0 - str sp, [r1, #64] ; 0x40 - msr CPSR_c, r2 - mov r0, #1 - stmia r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr} - adr r0, _037F97E0 - str r0, [r1, #60] ; 0x3c - mov r0, #0 - bx lr - - arm_func_start OS_LoadContext -OS_LoadContext: ; 0x037F97E0 -_037F97E0: ; needed because otherwise it breaks - mrs r1, CPSR - bic r1, r1, #31 - orr r1, r1, #211 ; 0xd3 - msr CPSR_c, r1 - ldr r1, [r0], #4 - msr SPSR_fsxc, r1 - ldr sp, [r0, #64] ; 0x40 - ldr lr, [r0, #60] ; 0x3c - ldmia r0, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^ - nop ; (mov r0, r0) - subs pc, lr, #4 diff --git a/arm7/lib/include/OS_context.h b/arm7/lib/include/OS_context.h index b01ccb8b..6b18ebd5 100644 --- a/arm7/lib/include/OS_context.h +++ b/arm7/lib/include/OS_context.h @@ -13,8 +13,8 @@ typedef struct OSContext u32 sp_svc; } OSContext; -extern u32 OS_SaveContext(OSContext *context); -extern void OS_LoadContext(OSContext *context); -extern void OS_InitContext(OSContext *context, u32 func, u32 stack); +void OS_InitContext(register OSContext *context, register u32 newpc, register u32 newsp); +BOOL OS_SaveContext(register OSContext *context); +void OS_LoadContext(register OSContext *context); #endif //POKEDIAMOND_ARM7_OS_CONTEXT_H diff --git a/arm7/lib/src/OS_context.c b/arm7/lib/src/OS_context.c new file mode 100644 index 00000000..99a25bb1 --- /dev/null +++ b/arm7/lib/src/OS_context.c @@ -0,0 +1,79 @@ +#include "OS_context.h" +#include "consts.h" +#include "function_target.h" + +ARM_FUNC asm void OS_InitContext(register OSContext *context, register u32 newpc, register u32 newsp) +{ + add newpc, newpc, #4 + str newpc, [context, #0x40] + + str newsp, [context, #0x44] + sub newsp, newsp, #HW_SVC_STACK_SIZE + + tst newsp, #4 + subne newsp, newsp, #4 + str newsp, [context, #0x38] + + ands r1, newpc, #1 + movne r1, #0x3f + moveq r1, #0x1f + str r1, [context] + + mov r1, #0 + str r1, [context, #0x4] + str r1, [context, #0x8] + str r1, [context, #0xc] + str r1, [context, #0x10] + str r1, [context, #0x14] + str r1, [context, #0x18] + str r1, [context, #0x1c] + str r1, [context, #0x20] + str r1, [context, #0x24] + str r1, [context, #0x28] + str r1, [context, #0x2c] + str r1, [context, #0x30] + str r1, [context, #0x34] + str r1, [context, #0x3c] + + bx lr +} + +ARM_FUNC asm BOOL OS_SaveContext(register OSContext *context) +{ + add r1, r0, #0 + + mrs r2, cpsr + str r2, [r1], #0x4 + + mov r0, #0xd3 + msr cpsr_c, r0 + str sp, [r1, #0x40] + msr cpsr_c, r2 + + mov r0, #1 + stmia r1, {r0-r14} + add r0, pc, #8 + str r0, [r1, #0x3c] + + mov r0, #0 + bx lr +} + +ARM_FUNC asm void OS_LoadContext(register OSContext* context) +{ + mrs r1, cpsr + bic r1, r1, #HW_PSR_CPU_MODE_MASK + orr r1, r1, #0xd3 + msr cpsr_c, r1 + + ldr r1, [r0], #0x4 + msr spsr_fsxc, r1 + + ldr sp, [r0, #0x40] + + ldr lr, [r0, #0x3c] + ldmia r0, {r0-r14}^ + nop + + subs pc, lr, #4 +} diff --git a/arm9/lib/include/OS_context.h b/arm9/lib/include/OS_context.h index 7c25ce2e..d3e24673 100644 --- a/arm9/lib/include/OS_context.h +++ b/arm9/lib/include/OS_context.h @@ -1,5 +1,5 @@ -#ifndef POKEDIAMOND_OS_CONTEXT_H -#define POKEDIAMOND_OS_CONTEXT_H +#ifndef POKEDIAMOND_ARM9_OS_CONTEXT_H +#define POKEDIAMOND_ARM9_OS_CONTEXT_H #include "nitro/types.h" #include "CP_context.h" @@ -16,7 +16,7 @@ typedef struct OSContext } OSContext; void OS_InitContext(register OSContext *context, register u32 newpc, register u32 newsp); -BOOL OS_SaveContext(OSContext *context); -void OS_LoadContext(OSContext *context); +BOOL OS_SaveContext(register OSContext *context); +void OS_LoadContext(register OSContext *context); -#endif //POKEDIAMOND_OS_CONTEXT_H +#endif //POKEDIAMOND_ARM9_OS_CONTEXT_H -- cgit v1.2.3 From 7f41d4a021c2653b6c7681b12ecde6885c7d0290 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 23 Sep 2020 15:55:46 +0100 Subject: arm9 PXI_init --- arm9/asm/PXI_init.s | 11 ----------- arm9/lib/include/PXI_init.h | 6 ++++++ arm9/lib/src/OS_init.c | 2 +- arm9/lib/src/OS_reset.c | 2 +- arm9/lib/src/PXI_init.c | 9 +++++++++ 5 files changed, 17 insertions(+), 13 deletions(-) delete mode 100644 arm9/asm/PXI_init.s create mode 100644 arm9/lib/include/PXI_init.h create mode 100644 arm9/lib/src/PXI_init.c diff --git a/arm9/asm/PXI_init.s b/arm9/asm/PXI_init.s deleted file mode 100644 index bc6123a3..00000000 --- a/arm9/asm/PXI_init.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start PXI_Init -PXI_Init: ; 0x020CFBB0 - ldr ip, _020CFBB8 ; =PXI_InitFifo - bx r12 - .balign 4 -_020CFBB8: .word PXI_InitFifo diff --git a/arm9/lib/include/PXI_init.h b/arm9/lib/include/PXI_init.h new file mode 100644 index 00000000..5c330c9c --- /dev/null +++ b/arm9/lib/include/PXI_init.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_PXI_INIT_H +#define POKEDIAMOND_PXI_INIT_H + +void PXI_Init(void); + +#endif //POKEDIAMOND_PXI_INIT_H diff --git a/arm9/lib/src/OS_init.c b/arm9/lib/src/OS_init.c index 00355853..83e8a7d9 100644 --- a/arm9/lib/src/OS_init.c +++ b/arm9/lib/src/OS_init.c @@ -1,8 +1,8 @@ #include "function_target.h" #include "OS_init.h" #include "MI_init.h" +#include "PXI_init.h" -extern void PXI_Init(void); extern void CTRDG_Init(void); extern void CARD_Init(void); extern void PM_Init(void); diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c index 2e333bb8..7331a7b0 100644 --- a/arm9/lib/src/OS_reset.c +++ b/arm9/lib/src/OS_reset.c @@ -9,11 +9,11 @@ #include "sections.h" #include "MI_dma.h" #include "CARD_common.h" +#include "PXI_init.h" static u16 OSi_IsInitReset = 0; vu16 OSi_IsResetOccurred = 0; -extern void PXI_Init(void); extern u32 PXI_IsCallbackReady(u32 param1, u32 param2); extern void PXI_SetFifoRecvCallback(u32 param1, void* callback); extern u32 PXI_SendWordByFifo(u32 param1, u32 data, u32 param2); diff --git a/arm9/lib/src/PXI_init.c b/arm9/lib/src/PXI_init.c new file mode 100644 index 00000000..f079ca3d --- /dev/null +++ b/arm9/lib/src/PXI_init.c @@ -0,0 +1,9 @@ +#include "PXI_init.h" +#include "function_target.h" + +extern void PXI_InitFifo(void); + +ARM_FUNC void PXI_Init(void) +{ + PXI_InitFifo(); +} -- cgit v1.2.3