diff options
author | Cleverking2003 <30466983+Cleverking2003@users.noreply.github.com> | 2020-07-14 08:31:45 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-14 08:31:45 +0300 |
commit | e62dcb7dc070fab232b124510938473cc35a2e78 (patch) | |
tree | e559d4ac0279f78b740b443a8c3936138dbfd226 | |
parent | 6ebca13d4c5a290e239364f90bf137c12f332a13 (diff) | |
parent | d2ff9e5df70f2c6be6a0c822ba2e689f82911911 (diff) |
Merge pull request #233 from red031000/master
palette padding changes + OS_timer
24 files changed, 110 insertions, 74 deletions
diff --git a/arm7/asm/OS_timer.s b/arm7/asm/OS_timer.s deleted file mode 100644 index 434be17a..00000000 --- a/arm7/asm/OS_timer.s +++ /dev/null @@ -1,20 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global _0380791C -_0380791C: ;0x0380791C - .space 0x03807920 - 0x0380791C - - .section .text - - arm_func_start OSi_SetTimerReserved -OSi_SetTimerReserved: ; 0x037FA348 - ldr r1, _037FA360 ; =_0380791C - ldrh r3, [r1] - mov r2, #1 - orr r0, r3, r2, lsl r0 - strh r0, [r1] - bx lr -_037FA360: .word _0380791C diff --git a/arm7/lib/include/OS_init.h b/arm7/lib/include/OS_init.h index 03d64ae1..6b70d2d8 100644 --- a/arm7/lib/include/OS_init.h +++ b/arm7/lib/include/OS_init.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_ARM7_OS_INIT_H #include "nitro/types.h" +#include "consts.h" #include "OS_system.h" #include "OS_arena.h" #include "OS_alloc.h" @@ -10,6 +11,8 @@ #include "OS_spinLock.h" #include "OS_context.h" #include "OS_interrupt.h" +#include "OS_timer.h" +#include "OS_tick.h" void OS_Init(void); diff --git a/arm7/lib/include/OS_timer.h b/arm7/lib/include/OS_timer.h index fee42c6f..4eddd0c1 100644 --- a/arm7/lib/include/OS_timer.h +++ b/arm7/lib/include/OS_timer.h @@ -1,6 +1,9 @@ -#ifndef POKEDIAMOND_OS_TIMER_H -#define POKEDIAMOND_OS_TIMER_H +#ifndef POKEDIAMOND_ARM7_OS_TIMER_H +#define POKEDIAMOND_ARM7_OS_TIMER_H #include "nitro/OS_timer_shared.h" +#include "nitro/types.h" -#endif +void OSi_SetTimerReserved(s32 timerNum); + +#endif //POKEDIAMOND_ARM7_OS_TIMER_H diff --git a/arm7/lib/src/OS_init.c b/arm7/lib/src/OS_init.c index 271d067b..d465aa9a 100644 --- a/arm7/lib/src/OS_init.c +++ b/arm7/lib/src/OS_init.c @@ -2,9 +2,8 @@ #include "OS_init.h" extern void PXI_Init(void); -extern void OS_InitTick(void); -extern void OS_InitAlarm(void); extern void OS_InitThread(void); +extern void OS_InitAlarm(void); extern void CTRDG_Init(void); ARM_FUNC void OS_Init(void) diff --git a/arm7/lib/src/OS_tick.c b/arm7/lib/src/OS_tick.c index e45b6833..bc42a54f 100644 --- a/arm7/lib/src/OS_tick.c +++ b/arm7/lib/src/OS_tick.c @@ -4,8 +4,6 @@ #include "OS_timer.h" #include "function_target.h" -extern void OSi_SetTimerReserved(u32); - static u16 OSi_UseTick; static OSTick OSi_TickCounter; static BOOL OSi_NeedResetTimer; diff --git a/arm7/lib/src/OS_timer.c b/arm7/lib/src/OS_timer.c new file mode 100644 index 00000000..69a1a6cd --- /dev/null +++ b/arm7/lib/src/OS_timer.c @@ -0,0 +1,9 @@ +#include "OS_timer.h" +#include "function_target.h" + +static u16 OSi_TimerReserved = 0; + +ARM_FUNC void OSi_SetTimerReserved(s32 timerNum) +{ + OSi_TimerReserved |= (1 << timerNum); +} diff --git a/arm9/asm/OS_timer.s b/arm9/asm/OS_timer.s deleted file mode 100644 index eeeda6ff..00000000 --- a/arm9/asm/OS_timer.s +++ /dev/null @@ -1,21 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global OSi_TimerReserved -OSi_TimerReserved: ; 0x021D37A8 - .space 0x4 - - .text - - arm_func_start OSi_SetTimerReserved -OSi_SetTimerReserved: ; 0x020CCBF0 - ldr r1, _020CCC08 ; =OSi_TimerReserved - mov r2, #0x1 - ldrh r3, [r1, #0x0] - orr r0, r3, r2, lsl r0 - strh r0, [r1, #0x0] - bx lr - .balign 4 -_020CCC08: .word OSi_TimerReserved diff --git a/arm9/lib/include/OS_init.h b/arm9/lib/include/OS_init.h index 03ff26d2..7cf21709 100644 --- a/arm9/lib/include/OS_init.h +++ b/arm9/lib/include/OS_init.h @@ -6,6 +6,7 @@ #include "OS_tcm.h" #include "OS_spinLock.h" #include "OS_context.h" +#include "OS_timer.h" #include "OS_tick.h" #include "OS_alarm.h" #include "OS_mutex.h" @@ -22,8 +23,6 @@ #include "OS_irqTable.h" #include "OS_interrupt.h" #include "OS_reset.h" -#include "OS_spinLock.h" -#include "OS_tick.h" void OS_Init(void); diff --git a/arm9/lib/include/OS_timer.h b/arm9/lib/include/OS_timer.h index effa5fc0..4a10041b 100644 --- a/arm9/lib/include/OS_timer.h +++ b/arm9/lib/include/OS_timer.h @@ -1,6 +1,9 @@ -#ifndef POKEDIAMOND_OS_TIMER_H -#define POKEDIAMOND_OS_TIMER_H +#ifndef POKEDIAMOND_ARM9_OS_TIMER_H +#define POKEDIAMOND_ARM9_OS_TIMER_H #include "nitro/OS_timer_shared.h" +#include "nitro/types.h" -#endif //POKEDIAMOND_OS_TIMER_H +void OSi_SetTimerReserved(s32 timerNum); + +#endif //POKEDIAMOND_ARM9_OS_TIMER_H diff --git a/arm9/lib/src/OS_init.c b/arm9/lib/src/OS_init.c index f919f521..a8f36f00 100644 --- a/arm9/lib/src/OS_init.c +++ b/arm9/lib/src/OS_init.c @@ -1,7 +1,3 @@ -// -// Created by mart on 4/12/20. -// - #include "function_target.h" #include "OS_init.h" diff --git a/arm9/lib/src/OS_tick.c b/arm9/lib/src/OS_tick.c index f5f2df30..17192117 100644 --- a/arm9/lib/src/OS_tick.c +++ b/arm9/lib/src/OS_tick.c @@ -8,8 +8,6 @@ static u16 OSi_UseTick = FALSE; vu64 OSi_TickCounter; BOOL OSi_NeedResetTimer = FALSE; -extern void OSi_SetTimerReserved(u32 param1); - ARM_FUNC void OS_InitTick(void) { if (OSi_UseTick) diff --git a/arm9/lib/src/OS_timer.c b/arm9/lib/src/OS_timer.c new file mode 100644 index 00000000..69a1a6cd --- /dev/null +++ b/arm9/lib/src/OS_timer.c @@ -0,0 +1,9 @@ +#include "OS_timer.h" +#include "function_target.h" + +static u16 OSi_TimerReserved = 0; + +ARM_FUNC void OSi_SetTimerReserved(s32 timerNum) +{ + OSi_TimerReserved |= (1 << timerNum); +} diff --git a/files/itemtool/itemdata/item_icon/.gitignore b/files/itemtool/itemdata/item_icon/.gitignore index b87dd594..c19031bc 100644 --- a/files/itemtool/itemdata/item_icon/.gitignore +++ b/files/itemtool/itemdata/item_icon/.gitignore @@ -111,3 +111,7 @@ narc_0111.NCLR narc_0112.NCGR narc_0112.NCLR narc_0114.NCLR +narc_0115.NCGR +narc_0115.NCLR +narc_0117.NCGR +narc_0117.NCLR diff --git a/files/itemtool/itemdata/item_icon/narc_0115.NCGR b/files/itemtool/itemdata/item_icon/narc_0115.NCGR Binary files differdeleted file mode 100644 index d43f7403..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0115.NCGR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0115.png b/files/itemtool/itemdata/item_icon/narc_0115.png Binary files differnew file mode 100644 index 00000000..eb534c06 --- /dev/null +++ b/files/itemtool/itemdata/item_icon/narc_0115.png diff --git a/files/itemtool/itemdata/item_icon/narc_0116.NCLR b/files/itemtool/itemdata/item_icon/narc_0116.NCLR Binary files differdeleted file mode 100644 index 8b358d93..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0116.NCLR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0117.NCGR b/files/itemtool/itemdata/item_icon/narc_0117.NCGR Binary files differdeleted file mode 100644 index 1f153671..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0117.NCGR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0117.png b/files/itemtool/itemdata/item_icon/narc_0117.png Binary files differnew file mode 100644 index 00000000..9c1d9a76 --- /dev/null +++ b/files/itemtool/itemdata/item_icon/narc_0117.png diff --git a/files/itemtool/itemdata/item_icon/narc_0118.NCLR b/files/itemtool/itemdata/item_icon/narc_0118.NCLR Binary files differdeleted file mode 100644 index 6a3c534a..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0118.NCLR +++ /dev/null diff --git a/filesystem.mk b/filesystem.mk index a203a0db..ade47589 100644 --- a/filesystem.mk +++ b/filesystem.mk @@ -1672,7 +1672,11 @@ files/itemtool/itemdata/item_icon.narc: \ files/itemtool/itemdata/item_icon/narc_0111.NCLR \ files/itemtool/itemdata/item_icon/narc_0112.NCGR \ files/itemtool/itemdata/item_icon/narc_0112.NCLR \ - files/itemtool/itemdata/item_icon/narc_0114.NCLR + files/itemtool/itemdata/item_icon/narc_0114.NCLR \ + files/itemtool/itemdata/item_icon/narc_0115.NCGR \ + files/itemtool/itemdata/item_icon/narc_0115.NCLR \ + files/itemtool/itemdata/item_icon/narc_0117.NCGR \ + files/itemtool/itemdata/item_icon/narc_0117.NCLR files/application/custom_ball/data/cb_data.narc: \ diff --git a/graphics_rules.mk b/graphics_rules.mk index 64762f03..3195fb18 100644 --- a/graphics_rules.mk +++ b/graphics_rules.mk @@ -1,5 +1,6 @@ #todo data/dp_areawindow.NCGR (weirdness with size) #todo data/graphic/bag_gra/narc_0007.NCGR (SOPC section) (width 32, palette narc_0003.NCLR) +#todo poketool/trgra/trbgra (unknown compression) CLOBBER_SIZE_NCGR_FILES := files/data/cell0.NCGR @@ -48,7 +49,9 @@ CLOBBER_SIZE_VERSION101_NCGR_FILES := files/graphic/bag_gra/narc_0002.NCGR \ files/itemtool/itemdata/item_icon/narc_0105.NCGR \ files/itemtool/itemdata/item_icon/narc_0107.NCGR \ files/itemtool/itemdata/item_icon/narc_0109.NCGR \ - files/itemtool/itemdata/item_icon/narc_0112.NCGR + files/itemtool/itemdata/item_icon/narc_0112.NCGR \ + files/itemtool/itemdata/item_icon/narc_0115.NCGR \ + files/itemtool/itemdata/item_icon/narc_0117.NCGR 4BPP_NCLR_FILES := files/demo/title/titledemo/narc_0016.NCLR @@ -141,7 +144,9 @@ NCGR_CLEAN_LIST := files/data/cell0.NCGR \ files/itemtool/itemdata/item_icon/narc_0105.NCGR \ files/itemtool/itemdata/item_icon/narc_0107.NCGR \ files/itemtool/itemdata/item_icon/narc_0109.NCGR \ - files/itemtool/itemdata/item_icon/narc_0112.NCGR + files/itemtool/itemdata/item_icon/narc_0112.NCGR \ + files/itemtool/itemdata/item_icon/narc_0115.NCGR \ + files/itemtool/itemdata/item_icon/narc_0117.NCGR NCLR_CLEAN_LIST := files/data/cell0.NCLR \ @@ -223,4 +228,6 @@ NCLR_CLEAN_LIST := files/data/cell0.NCLR \ files/itemtool/itemdata/item_icon/narc_0110.NCLR \ files/itemtool/itemdata/item_icon/narc_0111.NCLR \ files/itemtool/itemdata/item_icon/narc_0112.NCLR \ - files/itemtool/itemdata/item_icon/narc_0114.NCLR + files/itemtool/itemdata/item_icon/narc_0114.NCLR \ + files/itemtool/itemdata/item_icon/narc_0115.NCLR \ + files/itemtool/itemdata/item_icon/narc_0117.NCLR diff --git a/tools/nitrogfx/gfx.c b/tools/nitrogfx/gfx.c index 8f943698..7c57d269 100644 --- a/tools/nitrogfx/gfx.c +++ b/tools/nitrogfx/gfx.c @@ -549,14 +549,16 @@ void WriteGbaPalette(char *path, struct Palette *palette) fclose(fp); } -void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir, int bitdepth) +void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir, int bitdepth, bool pad, int compNum) { FILE *fp = fopen(path, "wb"); if (fp == NULL) FATAL_ERROR("Failed to open \"%s\" for writing.\n", path); - uint32_t size = 256 * 2; //todo check if there's a better way to detect :/ + int colourNum = pad ? 256 : 16; + + uint32_t size = colourNum * 2; //todo check if there's a better way to detect :/ uint32_t extSize = size + (ncpr ? 0x10 : 0x18); //NCLR header @@ -582,6 +584,11 @@ void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir, in //bit depth palHeader[8] = bitdepth == 4 ? 0x03: 0x04; + if (compNum) + { + palHeader[10] = compNum; //assuming this is an indicator of compression, literally no docs for it though + } + //size palHeader[16] = size & 0xFF; palHeader[17] = (size >> 8) & 0xFF; @@ -590,9 +597,9 @@ void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir, in fwrite(palHeader, 1, 0x18, fp); - unsigned char colours[256 * 2]; + unsigned char colours[colourNum * 2]; //palette data - for (int i = 0; i < 256; i++) + for (int i = 0; i < colourNum; i++) { if (i < palette->numColors) { @@ -614,11 +621,11 @@ void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir, in if (ir) { - colours[510] = 'I'; - colours[511] = 'R'; + colours[colourNum * 2 - 2] = 'I'; + colours[colourNum * 2 - 1] = 'R'; } - fwrite(colours, 1, 256 * 2, fp); + fwrite(colours, 1, colourNum * 2, fp); fclose(fp); } diff --git a/tools/nitrogfx/gfx.h b/tools/nitrogfx/gfx.h index e5189100..f833ac2e 100644 --- a/tools/nitrogfx/gfx.h +++ b/tools/nitrogfx/gfx.h @@ -36,6 +36,6 @@ void FreeImage(struct Image *image); void ReadGbaPalette(char *path, struct Palette *palette); void ReadNtrPalette(char *path, struct Palette *palette, int bitdepth); void WriteGbaPalette(char *path, struct Palette *palette); -void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir, int bitdepth); +void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir, int bitdepth, bool pad, int compNum); #endif // GFX_H diff --git a/tools/nitrogfx/main.c b/tools/nitrogfx/main.c index 188bdf0a..b7136b03 100644 --- a/tools/nitrogfx/main.c +++ b/tools/nitrogfx/main.c @@ -417,6 +417,8 @@ void HandlePngToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, c struct Palette palette; bool ncpr = false; bool ir = false; + bool nopad = false; + int compNum = 0; for (int i = 3; i < argc; i++) { @@ -430,6 +432,23 @@ void HandlePngToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, c { ir = true; } + else if (strcmp(option, "-nopad") == 0) + { + nopad = true; + } + if (strcmp(option, "-comp") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No compression value following \"-comp\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &compNum)) + FATAL_ERROR("Failed to parse compression value.\n"); + + if (compNum > 255) + FATAL_ERROR("Compression value must be 255 or below.\n"); + } else { FATAL_ERROR("Unrecognized option \"%s\".\n", option); @@ -437,7 +456,7 @@ void HandlePngToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, c } ReadPngPalette(inputPath, &palette); - WriteNtrPalette(outputPath, &palette, ncpr, ir, palette.bitDepth); + WriteNtrPalette(outputPath, &palette, ncpr, ir, palette.bitDepth, !nopad, compNum); } void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) @@ -522,7 +541,9 @@ void HandleJascToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, int numColors = 0; bool ncpr = false; bool ir = false; + bool nopad = false; int bitdepth = 0; + int compNum = 0; for (int i = 3; i < argc; i++) { @@ -541,7 +562,7 @@ void HandleJascToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, if (numColors < 1) FATAL_ERROR("Number of colors must be positive.\n"); } - if (strcmp(option, "-bitdepth") == 0) + else if (strcmp(option, "-bitdepth") == 0) { if (i + 1 >= argc) FATAL_ERROR("No bitdepth following \"-bitdepth\".\n"); @@ -554,6 +575,19 @@ void HandleJascToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, if (bitdepth != 4 && bitdepth != 8) FATAL_ERROR("Bitdepth must be 4 or 8.\n"); } + else if (strcmp(option, "-comp") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No compression value following \"-comp\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &compNum)) + FATAL_ERROR("Failed to parse compression value.\n"); + + if (compNum > 255) + FATAL_ERROR("Compression value must be 255 or below.\n"); + } else if (strcmp(option, "-ncpr") == 0) { ncpr = true; @@ -562,6 +596,10 @@ void HandleJascToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, { ir = true; } + else if (strcmp(option, "-nopad") == 0) + { + nopad = true; + } else { FATAL_ERROR("Unrecognized option \"%s\".\n", option); @@ -575,7 +613,7 @@ void HandleJascToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, if (numColors != 0) palette.numColors = numColors; - WriteNtrPalette(outputPath, &palette, ncpr, ir, bitdepth); + WriteNtrPalette(outputPath, &palette, ncpr, ir, bitdepth, !nopad, compNum); } void HandleLatinFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) |