Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix charset craziness #1202

Merged
merged 5 commits into from
Sep 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading