summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCleverking2003 <30466983+Cleverking2003@users.noreply.github.com>2020-07-14 08:31:45 +0300
committerGitHub <noreply@github.com>2020-07-14 08:31:45 +0300
commite62dcb7dc070fab232b124510938473cc35a2e78 (patch)
treee559d4ac0279f78b740b443a8c3936138dbfd226
parent6ebca13d4c5a290e239364f90bf137c12f332a13 (diff)
parentd2ff9e5df70f2c6be6a0c822ba2e689f82911911 (diff)
Merge pull request #233 from red031000/master
palette padding changes + OS_timer
-rw-r--r--arm7/asm/OS_timer.s20
-rw-r--r--arm7/lib/include/OS_init.h3
-rw-r--r--arm7/lib/include/OS_timer.h9
-rw-r--r--arm7/lib/src/OS_init.c3
-rw-r--r--arm7/lib/src/OS_tick.c2
-rw-r--r--arm7/lib/src/OS_timer.c9
-rw-r--r--arm9/asm/OS_timer.s21
-rw-r--r--arm9/lib/include/OS_init.h3
-rw-r--r--arm9/lib/include/OS_timer.h9
-rw-r--r--arm9/lib/src/OS_init.c4
-rw-r--r--arm9/lib/src/OS_tick.c2
-rw-r--r--arm9/lib/src/OS_timer.c9
-rw-r--r--files/itemtool/itemdata/item_icon/.gitignore4
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0115.NCGRbin560 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0115.pngbin0 -> 329 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0116.NCLRbin552 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0117.NCGRbin560 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0117.pngbin0 -> 294 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0118.NCLRbin552 -> 0 bytes
-rw-r--r--filesystem.mk6
-rw-r--r--graphics_rules.mk13
-rw-r--r--tools/nitrogfx/gfx.c21
-rw-r--r--tools/nitrogfx/gfx.h2
-rw-r--r--tools/nitrogfx/main.c44
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
deleted file mode 100644
index d43f7403..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0115.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0115.png b/files/itemtool/itemdata/item_icon/narc_0115.png
new file mode 100644
index 00000000..eb534c06
--- /dev/null
+++ b/files/itemtool/itemdata/item_icon/narc_0115.png
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0116.NCLR b/files/itemtool/itemdata/item_icon/narc_0116.NCLR
deleted file mode 100644
index 8b358d93..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0116.NCLR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0117.NCGR b/files/itemtool/itemdata/item_icon/narc_0117.NCGR
deleted file mode 100644
index 1f153671..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0117.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0117.png b/files/itemtool/itemdata/item_icon/narc_0117.png
new file mode 100644
index 00000000..9c1d9a76
--- /dev/null
+++ b/files/itemtool/itemdata/item_icon/narc_0117.png
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0118.NCLR b/files/itemtool/itemdata/item_icon/narc_0118.NCLR
deleted file mode 100644
index 6a3c534a..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0118.NCLR
+++ /dev/null
Binary files differ
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)