Skip to content

Commit

Permalink
Fix charset craziness (#1202)
Browse files Browse the repository at this point in the history
  • Loading branch information
ethteck authored Sep 12, 2024
1 parent 8b198cf commit 888b27e
Show file tree
Hide file tree
Showing 18 changed files with 440 additions and 457 deletions.
17 changes: 15 additions & 2 deletions include/include_asset.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
__asm__( \
".globl " #SYMBOLNAME"\n" \
PUSHSECTION(".data") \
".align 2\n" \
".align 3\n" \
".type " #SYMBOLNAME", @object\n" \
#SYMBOLNAME":\n" \
".incbin \"ver/"ASTRINGIFY(VERSION)"/build/" FILENAME ".bin\"\n" \
Expand All @@ -32,11 +32,24 @@
__asm__( \
".globl " #SYMBOLNAME"\n" \
PUSHSECTION(".data") \
".align 2\n" \
".align 3\n" \
".type " #SYMBOLNAME", @object\n" \
#SYMBOLNAME":\n" \
".incbin \"ver/"ASTRINGIFY(VERSION)"/build/" FILENAME ".bin\"\n" \
POPSECTION \
)

#define INCLUDE_RAW(FILENAME, SYMBOLNAME) \
extern unsigned char SYMBOLNAME[]; \
__asm__( \
".globl " #SYMBOLNAME"\n" \
PUSHSECTION(".data") \
".align 3\n" \
".type " #SYMBOLNAME", @object\n" \
#SYMBOLNAME":\n" \
".incbin \"ver/"ASTRINGIFY(VERSION)"/build/assets/"ASTRINGIFY(VERSION)"/" FILENAME "\"\n" \
POPSECTION \
)


#endif // _H_INCLUDE_ASSET
69 changes: 69 additions & 0 deletions src/charset/charset.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#include "include_asset.h"

#if VERSION_JP
INCLUDE_RAW("charset/kana.dat", charset_kana_OFFSET);
INCLUDE_RAW("charset/latin.dat", charset_latin_OFFSET);
INCLUDE_RAW("charset/kanji.dat", charset_kanji_OFFSET);
INCLUDE_RAW("charset/buttons.dat", charset_buttons_OFFSET);
INCLUDE_RAW("charset/menu_kana.dat", charset_menu_kana_OFFSET);
INCLUDE_RAW("charset/menu_latin.dat", charset_menu_latin_OFFSET);
#else
INCLUDE_RAW("charset/standard.dat", charset_standard_OFFSET);
#endif

INCLUDE_RAW("charset/standard/palette.dat", charset_standard_pal_OFFSET);
INCLUDE_RAW("charset/title.dat", charset_title_OFFSET);
INCLUDE_RAW("charset/subtitle.dat", charset_subtitle_OFFSET);
#if VERSION_IQUE
static int padding[] = {0, 0, 0, 0, 0, 0};
#endif
INCLUDE_RAW("charset/subtitle/palette.dat", charset_subtitle_pal_OFFSET);
INCLUDE_RAW("charset/title/palette.dat", charset_title_pal_OFFSET);

INCLUDE_IMG("charset/peach_letter.png", charset_peach_letter_OFFSET);
INCLUDE_PAL("charset/peach_letter.pal", charset_peach_letter_pal_OFFSET);

INCLUDE_IMG("charset/postcard.png", charset_postcard_OFFSET);
INCLUDE_PAL("charset/postcard.pal", charset_postcard_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_1.png", charset_letter_content_1_OFFSET);
INCLUDE_PAL("charset/letter_content_1.pal", charset_letter_content_1_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_2.png", charset_letter_content_2_OFFSET);
INCLUDE_PAL("charset/letter_content_2.pal", charset_letter_content_2_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_3.png", charset_letter_content_3_OFFSET);
INCLUDE_PAL("charset/letter_content_3.pal", charset_letter_content_3_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_4.png", charset_letter_content_4_OFFSET);
INCLUDE_PAL("charset/letter_content_4.pal", charset_letter_content_4_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_5.png", charset_letter_content_5_OFFSET);
INCLUDE_PAL("charset/letter_content_5.pal", charset_letter_content_5_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_6.png", charset_letter_content_6_OFFSET);
INCLUDE_PAL("charset/letter_content_6.pal", charset_letter_content_6_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_7.png", charset_letter_content_7_OFFSET);
INCLUDE_PAL("charset/letter_content_7.pal", charset_letter_content_7_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_8.png", charset_letter_content_8_OFFSET);
INCLUDE_PAL("charset/letter_content_8.pal", charset_letter_content_8_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_9.png", charset_letter_content_9_OFFSET);
INCLUDE_PAL("charset/letter_content_9.pal", charset_letter_content_9_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_10.png", charset_letter_content_10_OFFSET);
INCLUDE_PAL("charset/letter_content_10.pal", charset_letter_content_10_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_11.png", charset_letter_content_11_OFFSET);
INCLUDE_PAL("charset/letter_content_11.pal", charset_letter_content_11_pal_OFFSET);

INCLUDE_IMG("charset/letter_content_12.png", charset_letter_content_12_OFFSET);
INCLUDE_PAL("charset/letter_content_12.pal", charset_letter_content_12_pal_OFFSET);

#if VERSION_US || VERSION_PAL
static int padding2[] = {0, 0};
#endif

int something = 0x03E00008;
66 changes: 66 additions & 0 deletions src/charset/charset.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#ifndef _CHARSET_H_

#include "charset/peach_letter.png.h"

#if VERSION_JP
extern unsigned char charset_kana_OFFSET[];
extern unsigned char charset_latin_OFFSET[];
extern unsigned char charset_kanji_OFFSET[];
extern unsigned char charset_buttons_OFFSET[];
extern unsigned char charset_menu_kana_OFFSET[];
extern unsigned char charset_menu_latin_OFFSET[];
#else
extern unsigned char charset_standard_OFFSET[];
#endif

extern unsigned char charset_standard_pal_OFFSET[];

extern unsigned char charset_title_OFFSET[];
extern unsigned char charset_title_pal_OFFSET[];

extern unsigned char charset_subtitle_OFFSET[];
extern unsigned char charset_subtitle_pal_OFFSET[];

extern unsigned char charset_peach_letter_OFFSET[];
extern unsigned short charset_peach_letter_pal_OFFSET[];

extern unsigned char charset_postcard_OFFSET[];
extern unsigned short charset_postcard_pal_OFFSET[];

extern unsigned char charset_letter_content_1_OFFSET[];
extern unsigned short charset_letter_content_1_pal_OFFSET[];

extern unsigned char charset_letter_content_2_OFFSET[];
extern unsigned short charset_letter_content_2_pal_OFFSET[];

extern unsigned char charset_letter_content_3_OFFSET[];
extern unsigned short charset_letter_content_3_pal_OFFSET[];

extern unsigned char charset_letter_content_4_OFFSET[];
extern unsigned short charset_letter_content_4_pal_OFFSET[];

extern unsigned char charset_letter_content_5_OFFSET[];
extern unsigned short charset_letter_content_5_pal_OFFSET[];

extern unsigned char charset_letter_content_6_OFFSET[];
extern unsigned short charset_letter_content_6_pal_OFFSET[];

extern unsigned char charset_letter_content_7_OFFSET[];
extern unsigned short charset_letter_content_7_pal_OFFSET[];

extern unsigned char charset_letter_content_8_OFFSET[];
extern unsigned short charset_letter_content_8_pal_OFFSET[];

extern unsigned char charset_letter_content_9_OFFSET[];
extern unsigned short charset_letter_content_9_pal_OFFSET[];

extern unsigned char charset_letter_content_10_OFFSET[];
extern unsigned short charset_letter_content_10_pal_OFFSET[];

extern unsigned char charset_letter_content_11_OFFSET[];
extern unsigned short charset_letter_content_11_pal_OFFSET[];

extern unsigned char charset_letter_content_12_OFFSET[];
extern unsigned short charset_letter_content_12_pal_OFFSET[];

#endif
2 changes: 2 additions & 0 deletions src/filemenu/filemenu_msg.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
#include "filemenu.h"
#include "ld_addrs.h"

#include "charset/charset.h"

s32 msg_get_print_char_width(s32 character, s32 charset, s32 variation, f32 msgScale, s32 overrideCharWidth, u8 flags);

extern MessageCharset* MsgCharsets[5];
Expand Down
24 changes: 15 additions & 9 deletions src/msg.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include "message_ids.h"
#include "sprite.h"

#include "charset/charset.h"
#include "charset/postcard.png.h"
#include "charset/letter_content_1.png.h"

Expand Down Expand Up @@ -30,7 +31,12 @@ enum RewindArrowStates {

typedef MessageImageData* MessageImageDataList[1];

s32 D_8014C280[] = { 0x028001E0, 0x01FF0000, 0x028001E0, 0x01FF0000 };
Vp D_8014C280 = {
.vp = {
.vscale = {640, 480, 511, 0},
.vtrans = {640, 480, 511, 0},
}
};

#if !VERSION_JP
u8 MessagePlural[] = { MSG_CHAR_LOWER_S, MSG_CHAR_READ_END };
Expand Down Expand Up @@ -89,7 +95,7 @@ Gfx* D_80151338;
static char gMessageBuffers[2][1024];
static MessagePrintState gMessagePrinters[3];
#if VERSION_JP
static s32 D_80155C38;
static s32 D_80155C38;
#endif
static u8 gMessageMsgVars[3][32];
static s16 D_80155C98;
Expand Down Expand Up @@ -233,7 +239,7 @@ void load_font(s32 font) {
} else if (font == 1) {
load_font_data(charset_title_OFFSET, 0xF60, MsgCharImgTitle);
load_font_data(charset_subtitle_OFFSET, 0xB88, MsgCharImgSubtitle);
load_font_data(charset_credits_pal_OFFSET, 0x80, D_802F4560);
load_font_data(charset_subtitle_pal_OFFSET, 0x80, D_802F4560);
}
}
}
Expand Down Expand Up @@ -565,7 +571,7 @@ void render_messages(void) {

for (i = 0; i < ARRAY_COUNT(gMessagePrinters); i++) {
if (gMessagePrinters[i].stateFlags & MSG_STATE_FLAG_2) {
gSPViewport(gMainGfxPos++, D_8014C280);
gSPViewport(gMainGfxPos++, &D_8014C280);
guOrtho(matrix, 0.0f, 319.0f, -240.0f, 0.0f, -500.0f, 500.0f, 1.0f);
gSPMatrix(gMainGfxPos++, OS_K0_TO_PHYSICAL(matrix), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gDPPipeSync(gMainGfxPos++);
Expand Down Expand Up @@ -626,8 +632,8 @@ void msg_play_speech_sound(MessagePrintState* printer, u8 character) {

extern s32 gItemIconRasterOffsets[];
extern s32 gItemIconPaletteOffsets[];
extern s32 MsgLetterRasterOffsets[];
extern s32 MsgLetterPaletteOffsets[];
extern u8* MsgLetterRasterOffsets[];
extern u16* MsgLetterPaletteOffsets[];
extern MsgVoice MsgVoices[];

#if VERSION_PAL
Expand Down Expand Up @@ -798,13 +804,13 @@ void msg_copy_to_print_buffer(MessagePrintState* printer, s32 arg1, s32 arg2) {
romAddr = charset_ROM_START + (s32)charset_postcard_OFFSET;
dma_copy(romAddr, romAddr + ((charset_postcard_png_width * charset_postcard_png_height) / 2), printer->letterBackgroundImg);
printer->letterBackgroundPal = heap_malloc(0x20);
romAddr = charset_ROM_START + ((s32)charset_postcard_pal_OFFSET + 5);
romAddr = charset_ROM_START + (s32)charset_postcard_pal_OFFSET;
dma_copy(romAddr, romAddr + 0x20, printer->letterBackgroundPal);
printer->letterContentImg = heap_malloc(charset_letter_content_1_png_width * charset_letter_content_1_png_height);
romAddr = charset_ROM_START + MsgLetterRasterOffsets[arg];
romAddr = charset_ROM_START + (s32) MsgLetterRasterOffsets[arg];
dma_copy(romAddr, romAddr + (charset_letter_content_1_png_width * charset_letter_content_1_png_height), printer->letterContentImg);
printer->letterContentPal = heap_malloc(0x200);
romAddr = charset_ROM_START + MsgLetterPaletteOffsets[arg];
romAddr = charset_ROM_START + (s32) MsgLetterPaletteOffsets[arg];
dma_copy(romAddr, romAddr + 0x200, printer->letterContentPal);
break;
case MSG_STYLE_POPUP:
Expand Down
53 changes: 27 additions & 26 deletions src/msg_data.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "common.h"
#include "ld_addrs.h"
#include "charset/charset.h"

extern IMG_BIN MsgCharImgTitle[];
extern IMG_BIN MsgCharImgSubtitle[];
Expand Down Expand Up @@ -874,34 +875,34 @@ MessageCharset* MsgCharsets[] = {
NULL
};

s32 MsgLetterRasterOffsets[] = {
(s32) charset_letter_content_1_OFFSET,
(s32) charset_letter_content_2_OFFSET,
(s32) charset_letter_content_3_OFFSET,
(s32) charset_letter_content_4_OFFSET,
(s32) charset_letter_content_5_OFFSET,
(s32) charset_letter_content_6_OFFSET,
(s32) charset_letter_content_7_OFFSET,
(s32) charset_letter_content_8_OFFSET,
(s32) charset_letter_content_9_OFFSET,
(s32) charset_letter_content_10_OFFSET,
(s32) charset_letter_content_11_OFFSET,
(s32) charset_letter_content_12_OFFSET,
u8* MsgLetterRasterOffsets[] = {
charset_letter_content_1_OFFSET,
charset_letter_content_2_OFFSET,
charset_letter_content_3_OFFSET,
charset_letter_content_4_OFFSET,
charset_letter_content_5_OFFSET,
charset_letter_content_6_OFFSET,
charset_letter_content_7_OFFSET,
charset_letter_content_8_OFFSET,
charset_letter_content_9_OFFSET,
charset_letter_content_10_OFFSET,
charset_letter_content_11_OFFSET,
charset_letter_content_12_OFFSET,
};

s32 MsgLetterPaletteOffsets[] = {
(s32) charset_letter_content_1_pal_OFFSET + 6,
(s32) charset_letter_content_2_pal_OFFSET + 6,
(s32) charset_letter_content_3_pal_OFFSET + 6,
(s32) charset_letter_content_4_pal_OFFSET + 6,
(s32) charset_letter_content_5_pal_OFFSET + 6,
(s32) charset_letter_content_6_pal_OFFSET + 6,
(s32) charset_letter_content_7_pal_OFFSET + 6,
(s32) charset_letter_content_8_pal_OFFSET + 6,
(s32) charset_letter_content_9_pal_OFFSET + 6,
(s32) charset_letter_content_10_pal_OFFSET + 6,
(s32) charset_letter_content_11_pal_OFFSET + 6,
(s32) charset_letter_content_12_pal_OFFSET + 6,
u16* MsgLetterPaletteOffsets[] = {
charset_letter_content_1_pal_OFFSET,
charset_letter_content_2_pal_OFFSET,
charset_letter_content_3_pal_OFFSET,
charset_letter_content_4_pal_OFFSET,
charset_letter_content_5_pal_OFFSET,
charset_letter_content_6_pal_OFFSET,
charset_letter_content_7_pal_OFFSET,
charset_letter_content_8_pal_OFFSET,
charset_letter_content_9_pal_OFFSET,
charset_letter_content_10_pal_OFFSET,
charset_letter_content_11_pal_OFFSET,
charset_letter_content_12_pal_OFFSET,
};

MsgVoice MsgVoices[] = {
Expand Down
1 change: 1 addition & 0 deletions src/msg_draw.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include "message_ids.h"
#include "sprite.h"

#include "charset/charset.h"
#include "charset/postcard.png.h"
#include "charset/letter_content_1.png.h"

Expand Down
Loading

0 comments on commit 888b27e

Please sign in to comment.