From a240af0693b302fdcd39afb884ac6a5483e4e92a Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Tue, 8 Aug 2023 13:54:57 -0400 Subject: [PATCH] Run iconv as part of build (#354) * Run iconv as part of build That way files that need to be in EUC-JP encoding can still be worked on in UTF-8 Signed-off-by: Taggerung --- Makefile | 20 +++- mk64.ld | 8 +- src/code_80005FD0.c | 286 ++++++++++++++++++++++---------------------- src/credits.c | 122 +++++++++---------- 4 files changed, 224 insertions(+), 212 deletions(-) diff --git a/Makefile b/Makefile index 41858a157..49edab053 100644 --- a/Makefile +++ b/Makefile @@ -218,14 +218,20 @@ include $(MAKEFILE_SPLIT) COURSE_ASM_FILES := $(wildcard courses/*/*/packed.s) -C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) +# These are files that need to be encoded into EUC-JP in order for the ROM to match +# We filter them out from the regular C_FILES since we don't need nor want the +# UTF-8 versions getting compiled +EUC_JP_FILES := src/credits.c src/code_80005FD0.c +C_FILES := $(filter-out $(EUC_JP_FILES),$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))) S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s)) $(COURSE_ASM_FILES) COURSE_FILES := $(foreach dir,$(COURSE_DIRS),$(wildcard $(dir)/*.inc.c)) # Object files -O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \ - $(foreach file,$(COURSE_FILES),$(BUILD_DIR)/$(file:.c=.o)) \ - $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \ +O_FILES := \ + $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \ + $(foreach file,$(COURSE_FILES),$(BUILD_DIR)/$(file:.c=.o)) \ + $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \ + $(EUC_JP_FILES:%.c=$(BUILD_DIR)/%.jp.o) # Automatic dependency files DEP_FILES := $(O_FILES:.o=.d) $(BUILD_DIR)/$(LD_SCRIPT).d @@ -549,6 +555,10 @@ $(COURSE_DATA_TARGETS): $(BUILD_DIR)/%/course_data.inc.mio0.o: $(BUILD_DIR)/%/co # Source Code Generation # #==============================================================================# +$(BUILD_DIR)/%.jp.c: %.c + $(call print,Encoding:,$<,$@) + iconv -t EUC-JP -f UTF-8 $< -o $@ + $(BUILD_DIR)/%.o: %.c $(call print,Compiling:,$<,$@) @$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $< @@ -563,6 +573,8 @@ $(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c $(BUILD_DIR)/%.o: %.s $(MIO0_FILES) $(RAW_TEXTURE_FILES) $(AS) $(ASFLAGS) -o $@ $< +$(EUC_JP_FILES:%.c=$(BUILD_DIR)/%.jp.o): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) -- + $(GLOBAL_ASM_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) -- $(GLOBAL_ASM_AUDIO_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) -- diff --git a/mk64.ld b/mk64.ld index 36b07185a..cab64f258 100644 --- a/mk64.ld +++ b/mk64.ld @@ -84,7 +84,7 @@ SECTIONS BUILD_DIR/src/code_80004740.o(.text); BUILD_DIR/src/staff_ghosts.o(.text); BUILD_DIR/asm/unused_overflow_check.o(.text); - BUILD_DIR/src/code_80005FD0.o(.text); + BUILD_DIR/src/code_80005FD0.jp.o(.text); BUILD_DIR/src/camera.o(.text); BUILD_DIR/src/code_8001F980.o(.text); BUILD_DIR/src/kart_dma.o(.text); @@ -287,7 +287,7 @@ SECTIONS BUILD_DIR/src/os/_Litob.o(.data); BUILD_DIR/src/main.o(.rodata); BUILD_DIR/src/code_800029B0.o(.rodata); - BUILD_DIR/src/code_80005FD0.o(.rodata); + BUILD_DIR/src/code_80005FD0.jp.o(.rodata); BUILD_DIR/src/camera.o(.rodata); BUILD_DIR/src/code_8001F980.o(.rodata); BUILD_DIR/src/code_80027D00.o(.rodata); @@ -428,11 +428,11 @@ SECTIONS BUILD_DIR/src/code_80280650.o(.data); BUILD_DIR/data/data_credits_128480.o(.data); BUILD_DIR/src/dl_unk_80284EE0.inc.o(.data); - BUILD_DIR/src/credits.o(.data); + BUILD_DIR/src/credits.jp.o(.data); BUILD_DIR/src/ceremony_and_credits.o(.data); BUILD_DIR/src/code_80280650.o(.rodata); BUILD_DIR/src/camera_junk.o(.rodata); - BUILD_DIR/src/credits.o(.rodata); + BUILD_DIR/src/credits.jp.o(.rodata); BUILD_DIR/src/ceremony_and_credits.o(.rodata); } END_SEG(code_80280000) diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 8ea69795d..6b8126632 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -22,71 +22,71 @@ // https://en.wikipedia.org/wiki/Extended_Unix_Code#EUC-JP // Force sort immediately after goal -char *D_800EB710 = "ゴール直後の強制ソート\n"; +char *D_800EB710 = "眼若翫綣桁吟純若\n"; // Forced sort immediately after one goal in 2PGP -char *D_800EB728 = "2PGPで片方がゴール直後の強制ソート\n"; +char *D_800EB728 = "2PGPх鴻眼若翫綣桁吟純若\n"; // rank calculation error -char *D_800EB74C = "順位計算エラー!! (num %d) (rank %d) (e_rank %d)\n"; +char *D_800EB74C = "篏荐膊種鐚 (num %d) (rank %d) (e_rank %d)\n"; // Bypass switching error!!!(num %d org_bipas %d bipas %d) -char *D_800EB780 = "バイパス切り替え エラー!!!(num %d org_bipas %d bipas %d)\n"; +char *D_800EB780 = "ゃ劫帥 !!!(num %d org_bipas %d bipas %d)\n"; char *D_800EB7BC = "(%d) rap %3d rate_count_F %10.2f rap_count_F %10.2f area %5d \n"; // Enter the maze! enemy %d (%d --> %d) -char *D_800EB800 = "迷路に突入! enemy %d (%d --> %d)\n"; +char *D_800EB800 = "菴決君腦ワ enemy %d (%d --> %d)\n"; // Out of the maze! enemy %d (%d --> %d) -char *D_800EB824 = "迷路から出た! enemy %d (%d --> %d)\n"; +char *D_800EB824 = "菴決君冴鐚 enemy %d (%d --> %d)\n"; char *D_800EB84C = "enemy voice set (%d slip_flag %x weapon %x)\n"; // Spin Voice! ! (%d , name %d) -char *D_800EB87C = "スピンヴォイス!!(%d , name %d)\n"; +char *D_800EB87C = "鴻潟眼ゃ刻鐚(%d , name %d)\n"; // Damage voice! ! (%d, name %d) -char *D_800EB8A0 = "ダメージヴォイス!!(%d, name %d)\n"; +char *D_800EB8A0 = "<若吾眼ゃ刻鐚(%d, name %d)\n"; char *D_800EB8C4 = "===== ENEMY DRIVE SUB (%d) =====\n"; // omission -char *D_800EB8E8 = "ENEMY END(手抜き)\n\n"; -char *D_800EB8FC = "ENEMY END(手抜き)\n\n"; +char *D_800EB8E8 = "ENEMY END()\n\n"; +char *D_800EB8FC = "ENEMY END()\n\n"; char *D_800EB910 = "(1)enemy stick angle over!! (%d)\n"; char *D_800EB934 = "ENEMY END\n\n"; char *D_800EB940 = "(2)enemy stick angle over!! (%d)\n"; char *D_800EB964 = "ENEMY END\n\n"; // AREA ERR!!! (group not registered at current centerline %d) %d -char *D_800EB970 = "AREA ERR!!! (現在のセンターライン %d に未登録のグループです) %d\n"; +char *D_800EB970 = "AREA ERR!!! (憜祉潟帥若ゃ %d 脂蚊違若с) %d\n"; // AREA ERR!!! (Unregistered group) %d -char *D_800EB9B4 = "AREA ERR!!! (未登録のグループです) %d\n"; +char *D_800EB9B4 = "AREA ERR!!! (脂蚊違若с) %d\n"; // get_oga_area_sub_BP() ... Area not found! (b_num = %d) -char *D_800EB9DC = "get_oga_area_sub_BP() ... エリアが見つからないッス! (b_num = %d)\n"; +char *D_800EB9DC = "get_oga_area_sub_BP() ... ≪荀ゃ刻 (b_num = %d)\n"; // Status: (%d, %d, %d) -char *D_800EBA20 = " 状況: (%d, %d, %d) \n"; +char *D_800EBA20 = " 倶: (%d, %d, %d) \n"; char *D_800EBA38 = "<%d> (%d, %d, %d) [%d] lng %f\n"; // Wario Stadium Jump failed! ! ! (area %d, y %7.2f) -char *D_800EBA58 = "ワリオスタジアム ジャンプ失敗!!! (area %d, y %7.2f)\n"; +char *D_800EBA58 = "鴻帥吾≪ 吾c潟紊掩鐚鐚鐚 (area %d, y %7.2f)\n"; // I fell in the water! ! Forced to centerline (num %d: area %d ) (%d,%d,%d) -char *D_800EBA94 = "水に落ちた!! センターラインに強制移動しました (num %d: area %d ) (%d,%d,%d)\n"; +char *D_800EBA94 = "羂眼純<鐚鐚 祉潟帥若ゃ潟綣桁句Щ障 (num %d: area %d ) (%d,%d,%d)\n"; // Course match! ! (Slacking: with bump) Forced move to center line (num %d: area %d ==>%d) (group %d) (%d,%d,%d) -char *D_800EBAE4 = "こーすあうと!!(手抜き中:バンプ有り) センターラインに強制移動しました (num %d: area %d ==>%d) (group %d) (%d,%d,%d)\n"; +char *D_800EBAE4 = "若鐚鐚鐚筝:潟鐚 祉潟帥若ゃ潟綣桁句Щ障 (num %d: area %d ==>%d) (group %d) (%d,%d,%d)\n"; // Course match! ! (Sitting corners: no bump) Forced move to center line (num %d: area %d ==>%d) (group %d) (%d,%d,%d) -char *D_800EBB60 = "こーすあうと!!(手抜き中:バンプ無し) センターラインに強制移動しました (num %d: area %d ==>%d) (group %d) (%d,%d,%d)\n"; +char *D_800EBB60 = "若鐚鐚鐚筝:潟<鐚 祉潟帥若ゃ潟綣桁句Щ障 (num %d: area %d ==>%d) (group %d) (%d,%d,%d)\n"; // Course match! ! ! Recalculated area (num %d: area %d ==>%d) -char *D_800EBBDC = "こーすあうと!!! エリアを再計算しました (num %d: area %d ==>%d)\n"; +char *D_800EBBDC = "若鐚鐚鐚 ≪荐膊障 (num %d: area %d ==>%d)\n"; // Direct BOM(%d) (%7.2f, %7.2f, %7.2f) -char *D_800EBC24 = "直接指定のBOM(%d) (%7.2f, %7.2f, %7.2f) \n"; +char *D_800EBC24 = "贋・絎BOM(%d) (%7.2f, %7.2f, %7.2f) \n"; char *D_800EBC50 = "BOM HIT CHECK\n"; char *D_800EBC60 = "BOM HIT !!!!! (%d)\n"; // BOM standby -char *D_800EBC74 = "BOM待機\n"; +char *D_800EBC74 = "BOM緇罘\n"; char *D_800EBC80 = "RESULT BOM area(%d)\n"; // BOM dropped. -char *D_800EBC98 = "BOM が 落ちました。\n"; +char *D_800EBC98 = "BOM 純<障\n"; // Tortoise fire pillar SET failed (TABLE IS FULL) -char *D_800EBCB0 = "カメ用火柱 SET 失敗 (TABLE IS FULL)\n"; +char *D_800EBCB0 = "∞ SET 紊掩 (TABLE IS FULL)\n"; // Red turtle fire pillar set error! (category %d) -char *D_800EBCD8 = "赤ガメ火柱セットエラー! (category %d)\n"; +char *D_800EBCD8 = "莎ゃ∞宴祉種 (category %d)\n"; // Blue turtle fire pillar set error! (category %d) -char *D_800EBD00 = "青ガメ火柱セットエラー! (category %d)\n"; +char *D_800EBD00 = "∞宴祉種 (category %d)\n"; // Thorn Turtle Fire Pillar Set Error! (category %d) -char *D_800EBD28 = "トゲガメ火柱セットエラー! (category %d)\n"; +char *D_800EBD28 = "蚊∞宴祉種 (category %d)\n"; // Turtle Fire Pillar Initialization! ! -char *D_800EBD54 = "カメ火柱初期化!!\n"; +char *D_800EBD54 = "∞怨鐚鐚\n"; // Center line initialization -char *D_800EBD68 = "センターライン初期化\n"; +char *D_800EBD68 = "祉潟帥若ゃ喝\n"; char *D_800EBD80 = "MAP NUMBER %d\n"; char *D_800EBD90 = "center_EX ptr = %x %x (%x)\n"; char *D_800EBDB4 = "\n"; @@ -98,90 +98,90 @@ char *D_800EBE58 = "angle_BP[%d] ptr = %x %x (%x)\n"; char *D_800EBE80 = "short_cut_data_BP[%d] ptr = %x %x (%x)\n"; char *D_800EBEA8 = "\n"; // Ogawa total memory used = %d -char *D_800EBEAC = "小川の使用メモリー合計 = %d\n"; +char *D_800EBEAC = "絨鎴篏睡<≪弱荐 = %d\n"; // Enemy initialization -char *D_800EBECC = "敵初期化\n"; +char *D_800EBECC = "球\n"; // End of enemy initialization -char *D_800EBED8 = "敵初期化終了\n"; +char *D_800EBED8 = "球腟篋\n"; // Bypass CENTER LINE Split start -char *D_800EBEE8 = "バイパス CENTER LINE 分割開始\n"; +char *D_800EBEE8 = "ゃ CENTER LINE 臥紮\n"; // Read centerline from ROM (map:%d) -char *D_800EBF08 = "センターラインをROMから読みます (map:%d)\n"; +char *D_800EBF08 = "祉潟帥若ゃ潟ROM茯帥障 (map:%d)\n"; char *D_800EBF34 = "ROM center (BP%d) line adr. = %x (%x)\n"; // Calculate centerline (map:%d) -char *D_800EBF5C = "センターラインを計算します (map:%d)\n"; +char *D_800EBF5C = "祉潟帥若ゃ潟荐膊障 (map:%d)\n"; char *D_800EBF84 = "center (BP%d) line adr. = %x (%x)\n"; char *D_800EBFA8 = "BP center_point_number : %d\n"; // Centerline data error! ! -char *D_800EBFC8 = "センターライン データ エラー!!\n"; +char *D_800EBFC8 = "祉潟帥若ゃ 若 種鐚\n"; // Bypass CENTER LINE split end (%d -> %d number) -char *D_800EBFEC = "バイパス CENTER LINE 分割終了 (%d -> %d 個)\n"; +char *D_800EBFEC = "ゃ CENTER LINE 牙篋 (%d -> %d )\n"; // No center line. (map: %d) -char *D_800EC01C = "センターラインが ありません。(map:%d)\n"; +char *D_800EC01C = "祉潟帥若ゃ潟 障(map:%d)\n"; // side point calculation (bypass %d) -char *D_800EC044 = "サイドポイント計算 (バイパス %d)\n"; +char *D_800EC044 = "泣ゃゃ潟荐膊 (ゃ %d)\n"; // Curve data calculation (bypass %d) -char *D_800EC068 = "カーブデータ計算 (バイパス %d)\n"; +char *D_800EC068 = "若若粋膊 (ゃ %d)\n"; // No center line. (map: %d) -char *D_800EC088 = "センターラインが ありません。(map:%d)\n"; +char *D_800EC088 = "祉潟帥若ゃ潟 障(map:%d)\n"; // Angle data calculation (bypass %d) -char *D_800EC0B0 = "アングルデータ計算 (バイパス %d) \n"; +char *D_800EC0B0 = "≪潟違若粋膊 (ゃ %d) \n"; // No center line. (map: %d) -char *D_800EC0D4 = "センターラインが ありません。(map:%d)\n"; +char *D_800EC0D4 = "祉潟帥若ゃ潟 障(map:%d)\n"; // Shortcut data calculation (bypass %d) -char *D_800EC0FC = "ショートカットデータ計算 (バイパス %d)\n"; +char *D_800EC0FC = "激с若若粋膊 (ゃ %d)\n"; char *D_800EC124 = "extern POINT rom_center_KT%d_BP%d[] = {\n"; char *D_800EC150 = "\t{%d,%d,%d,%d},\n"; char *D_800EC164 = "\t0x8000,0x8000,0x8000,0\n};\n\n"; char *D_800EC184 = "area read from ROM (%d)\n"; // Normal jump! ! ! (%d) -char *D_800EC1A0 = "ノーマルジャンプ!!!(%d)\n"; +char *D_800EC1A0 = "若吾c潟鐚鐚鐚(%d)\n"; // Turbo on! ! ! (%d) -char *D_800EC1BC = "ターボオン!!!(%d)\n"; +char *D_800EC1BC = "帥若鰹鐚鐚(%d)\n"; // No cutting corners! ! ! (%d) -char *D_800EC1D4 = "手抜き禁止!!!(%d)\n"; +char *D_800EC1D4 = "胼罩鐚鐚鐚(%d)\n"; // Action start data error! (num %d, act %d) -char *D_800EC1EC = "アクション開始データエラー!(num %d, act %d)\n"; +char *D_800EC1EC = "≪激с渇紮若帥種(num %d, act %d)\n"; // Action end data error! (num %d, act %d, old_act_num %d) -char *D_800EC21C = "アクション終了データエラー!(num %d, act %d, old_act_num %d)\n"; +char *D_800EC21C = "≪激с括篋若帥種(num %d, act %d, old_act_num %d)\n"; char *D_800EC25C = "SL : center_point_number : %d\n"; // SL: CENTER LINE split start -char *D_800EC27C = "SL: CENTER LINE 分割開始\n"; +char *D_800EC27C = "SL: CENTER LINE 臥紮\n"; // SL: CENTER LINE split ended (%d -> %d indivual) -char *D_800EC298 = "SL: CENTER LINE 分割終了 (%d -> %d 個)\n"; +char *D_800EC298 = "SL: CENTER LINE 牙篋 (%d -> %d )\n"; char *D_800EC2C0 = "SHIP : center_point_number : %d\n"; // SHIP: CENTER LINE split start -char *D_800EC2E4 = "SHIP: CENTER LINE 分割開始\n"; +char *D_800EC2E4 = "SHIP: CENTER LINE 臥紮\n"; // SHIP: CENTER LINE split ended (%d -> %d indivual) -char *D_800EC300 = "SHIP: CENTER LINE 分割終了 (%d -> %d 個)\n"; +char *D_800EC300 = "SHIP: CENTER LINE 牙篋 (%d -> %d )\n"; // General-purpose OBJ character initialization -char *D_800EC32C = "汎用OBJキャラ初期化\n"; +char *D_800EC32C = "羆OBJc\n"; // SL OBJ settings -char *D_800EC344 = "SL OBJ設定\n"; +char *D_800EC344 = "SL OBJ荐絎\n"; // SHIP OBJ settings -char *D_800EC350 = "SHIP OBJ設定\n"; +char *D_800EC350 = "SHIP OBJ荐絎\n"; // Track OBJ settings -char *D_800EC360 = "トラックOBJ設定\n"; +char *D_800EC360 = "OBJ荐絎\n"; // Bus OBJ setting -char *D_800EC374 = "バスOBJ設定\n"; +char *D_800EC374 = "OBJ荐絎\n"; // Tank OBJ setting -char *D_800EC384 = "タンクOBJ設定\n"; +char *D_800EC384 = "帥潟OBJ荐絎\n"; // RV OBJ settings -char *D_800EC394 = "RV OBJ設定\n"; +char *D_800EC394 = "RV OBJ荐絎\n"; // Generic OBJ character initialization completed -char *D_800EC3A0 = "汎用OBJキャラ初期化終了\n"; +char *D_800EC3A0 = "羆OBJc腟篋\n"; // horn (num %d, permit %d, %d) -char *D_800EC3BC = "クラクション (num %d, permit %d, %d)\n"; +char *D_800EC3BC = "激с (num %d, permit %d, %d)\n"; char *D_800EC3E4 = "OGA CAMERA INIT (%d)\n"; char *D_800EC3FC = "OGA CAMERA INIT END\n"; // High speed camera ERR !!! (ncx = %f) -char *D_800EC414 = "高速カメラ ERR !!! (ncx = %f)\n"; +char *D_800EC414 = "蕭< ERR !!! (ncx = %f)\n"; // High speed camera ERR !!! (ncz = %f) -char *D_800EC434 = "高速カメラ ERR !!! (ncz = %f)\n"; +char *D_800EC434 = "蕭< ERR !!! (ncz = %f)\n"; // High speed camera ERR !!! (ecx = %f) -char *D_800EC454 = "高速カメラ ERR !!! (ecx = %f)\n"; +char *D_800EC454 = "蕭< ERR !!! (ecx = %f)\n"; // High speed camera ERR !!! (ecz = %f) -char *D_800EC474 = "高速カメラ ERR !!! (ecz = %f)\n"; +char *D_800EC474 = "蕭< ERR !!! (ecz = %f)\n"; char *D_800EC494 = "OGA DRIVERS POINT CAMERA MODE \n"; char *D_800EC4B4 = "OGA WINNER CAMERA MODE \n"; char *D_800EC4D0 = "OGA TIMEATTACK QUICK CAMERA INIT \n"; @@ -190,168 +190,168 @@ char *D_800EC514 = "GOAL! <> camera %d rank %d\n"; char *D_800EC53C = "GOAL! <> camera %d rank %d\n"; char *D_800EC568 = "GOAL! <> camera %d rank %d\n"; // Camera and cart collided! ! ! -char *D_800EC594 = "カメラとカートが衝突しました!!! (%d)\n"; +char *D_800EC594 = "<若茵腦障鐚鐚鐚 (%d)\n"; char *D_800EC5C0 = "<<< ITEM OBJ NUMBER ERR !! >>> item %d obj_num %d \n"; // <<< BANANA SET HOUSE >>> obj_num %d zure %f -char *D_800EC5F8 = "<<< BANANA SET 失敗 >>> obj_num %d zure %f \n"; +char *D_800EC5F8 = "<<< BANANA SET 紊掩 >>> obj_num %d zure %f \n"; // BANANA Caught in owner check. (num %d) -char *D_800EC628 = "BANANA 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800EC628 = "BANANA с綣f障(num %d)\n"; // Reason: EXISTOBJ -char *D_800EC65C = "理由: EXISTOBJ \n"; +char *D_800EC65C = ": EXISTOBJ \n"; // Reason: category -char *D_800EC670 = "理由: category \n"; +char *D_800EC670 = ": category \n"; // Reason: sparam -char *D_800EC684 = "理由: sparam \n"; +char *D_800EC684 = ": sparam \n"; // Reason: num -char *D_800EC694 = "理由: num \n"; +char *D_800EC694 = ": num \n"; char *D_800EC6A0 = "BANANA HOLD (num %d time %d hold_time %d)\n"; // Installation Caught in BANANA owner check. (num %d) -char *D_800EC6D0 = "設置 BANANA 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800EC6D0 = "荐臀 BANANA с綣f障(num %d)\n"; // Reason: EXISTOBJ -char *D_800EC708 = "理由: EXISTOBJ \n"; +char *D_800EC708 = ": EXISTOBJ \n"; // Reason: category -char *D_800EC71C = "理由: category \n"; +char *D_800EC71C = ": category \n"; // Reason: sparam -char *D_800EC730 = "理由: sparam \n"; +char *D_800EC730 = ": sparam \n"; // Reason: num -char *D_800EC740 = "理由: num \n"; +char *D_800EC740 = ": num \n"; // I put BANANA. (num %d) -char *D_800EC74C = "BANANA 置きました。 (num %d)\n"; +char *D_800EC74C = "BANANA 臀障 (num %d)\n"; // <<< BANANA NAGE SET failed >>> obj_num %d -char *D_800EC76C = "<<< BANANA NAGE SET 失敗 >>> obj_num %d \n"; +char *D_800EC76C = "<<< BANANA NAGE SET 紊掩 >>> obj_num %d \n"; // BANANA NAGE MOVE Caught in owner check. (num %d) -char *D_800EC798 = "BANANA NAGE MOVE 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800EC798 = "BANANA NAGE MOVE с綣f障(num %d)\n"; // Reason: EXISTOBJ -char *D_800EC7D8 = "理由: EXISTOBJ \n"; +char *D_800EC7D8 = ": EXISTOBJ \n"; // Reason: category -char *D_800EC7EC = "理由: category \n"; +char *D_800EC7EC = ": category \n"; // Reason: sparam -char *D_800EC800 = "理由: sparam \n"; +char *D_800EC800 = ": sparam \n"; // Reason: num -char *D_800EC810 = "理由: num \n"; -char *D_800EC81C = "BANANA NAGE END 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800EC810 = ": num \n"; +char *D_800EC81C = "BANANA NAGE END с綣f障(num %d)\n"; // Reason: EXISTOBJ -char *D_800EC858 = "理由: EXISTOBJ \n"; +char *D_800EC858 = ": EXISTOBJ \n"; // Reason: category -char *D_800EC86C = "理由: category \n"; +char *D_800EC86C = ": category \n"; // Reason: sparam -char *D_800EC880 = "理由: sparam \n"; +char *D_800EC880 = ": sparam \n"; // Reason: num -char *D_800EC890 = "理由: num \n"; +char *D_800EC890 = ": num \n"; char *D_800EC89C = "G_SHELL HOLD (num %d time %d hold_time %d)\n"; // <<< G_SHELL SET failed >>> obj_num %d -char *D_800EC8CC = "<<< G_SHELL SET 失敗 >>> obj_num %d \n"; +char *D_800EC8CC = "<<< G_SHELL SET 紊掩 >>> obj_num %d \n"; // <<< G_SHELL SET failed >>> object_count %d -char *D_800EC8F4 = "<<< G_SHELL SET 失敗 >>> object_count %d \n"; +char *D_800EC8F4 = "<<< G_SHELL SET 紊掩 >>> object_count %d \n"; // G_SHELL Caught in owner check. (num %d) -char *D_800EC920 = "G_SHELL 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800EC920 = "G_SHELL с綣f障(num %d)\n"; // Reason: EXISTOBJ -char *D_800EC954 = "理由: EXISTOBJ \n"; +char *D_800EC954 = ": EXISTOBJ \n"; // Reason: category -char *D_800EC968 = "理由: category \n"; +char *D_800EC968 = ": category \n"; // Reason: sparam -char *D_800EC97C = "理由: sparam \n"; +char *D_800EC97C = ": sparam \n"; // Reason: num -char *D_800EC98C = "理由: num \n"; +char *D_800EC98C = ": num \n"; // Just before launch G_SHELL Caught in owner check. (num %d) -char *D_800EC998 = "発射直前 G_SHELL 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800EC998 = "阪翫 G_SHELL с綣f障(num %d)\n"; // Reason: EXISTOBJ -char *D_800EC9D8 = "理由: EXISTOBJ \n"; +char *D_800EC9D8 = ": EXISTOBJ \n"; // Reason: category -char *D_800EC9EC = "理由: category \n"; +char *D_800EC9EC = ": category \n"; // Reason: sparam -char *D_800ECA00 = "理由: sparam \n"; +char *D_800ECA00 = ": sparam \n"; // Reason: num -char *D_800ECA10 = "理由: num \n"; +char *D_800ECA10 = ": num \n"; // G_SHELL firing (num %d) -char *D_800ECA1C = "G_SHELL 発射 (num %d)\n"; +char *D_800ECA1C = "G_SHELL 阪 (num %d)\n"; char *D_800ECA34 = "R_SHELL HOLD (num %d time %d hold_time %d obj_num %d)\n"; // <<< R_SHELL SET failed >>> obj_num %d -char *D_800ECA70 = "<<< R_SHELL SET 失敗 >>> obj_num %d \n"; +char *D_800ECA70 = "<<< R_SHELL SET 紊掩 >>> obj_num %d \n"; // <<< R_SHELL SET failed >>> object_count %d -char *D_800ECA98 = "<<< R_SHELL SET 失敗 >>> object_count %d \n"; +char *D_800ECA98 = "<<< R_SHELL SET 紊掩 >>> object_count %d \n"; // R_SHELL Caught in owner check. (num %d) -char *D_800ECAC4 = "R_SHELL 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800ECAC4 = "R_SHELL с綣f障(num %d)\n"; // Reason: EXISTOBJ -char *D_800ECAF8 = "理由: EXISTOBJ \n"; +char *D_800ECAF8 = ": EXISTOBJ \n"; // Reason: category -char *D_800ECB0C = "理由: category \n"; +char *D_800ECB0C = ": category \n"; // Reason: sparam -char *D_800ECB20 = "理由: sparam \n"; +char *D_800ECB20 = ": sparam \n"; // Reason: num -char *D_800ECB30 = "理由: num \n"; +char *D_800ECB30 = ": num \n"; char *D_800ECB3C = "R_SHELL SHOOT (num %d time %d hold_time %d obj_num %d)\n"; // Just before launch R_SHELL Caught in owner check. (num %d) -char *D_800ECB78 = "発射直前 R_SHELL 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800ECB78 = "阪翫 R_SHELL с綣f障(num %d)\n"; // Reason: EXISTOBJ -char *D_800ECBB8 = "理由: EXISTOBJ \n"; +char *D_800ECBB8 = ": EXISTOBJ \n"; // Reason: category -char *D_800ECBCC = "理由: category \n"; +char *D_800ECBCC = ": category \n"; // Reason: sparam -char *D_800ECBE0 = "理由: sparam \n"; +char *D_800ECBE0 = ": sparam \n"; // Reason: num -char *D_800ECBF0 = "理由: num \n"; +char *D_800ECBF0 = ": num \n"; // R_SHELL firing (num %d) -char *D_800ECBFC = "R_SHELL 発射 (num %d)\n"; +char *D_800ECBFC = "R_SHELL 阪 (num %d)\n"; char *D_800ECC14 = "S_BANANA HOLD (num %d time %d hold_time %d)\n"; // <<< SUPER_BANANA SET failed >>> obj_num %d -char *D_800ECC44 = "<<< SUPER_BANANA SET 失敗 >>> obj_num %d \n"; +char *D_800ECC44 = "<<< SUPER_BANANA SET 紊掩 >>> obj_num %d \n"; // <<< SUPER_BANANA SET failed >>> object_count %d -char *D_800ECC70 = "<<< SUPER_BANANA SET 失敗 >>> object_count %d \n"; +char *D_800ECC70 = "<<< SUPER_BANANA SET 紊掩 >>> object_count %d \n"; // S_BANANA Caught in owner check. (num %d) -char *D_800ECCA0 = "S_BANANA 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800ECCA0 = "S_BANANA с綣f障(num %d)\n"; // Reason: category -char *D_800ECCD8 = "理由: category \n"; +char *D_800ECCD8 = ": category \n"; // Reason: sparam -char *D_800ECCEC = "理由: sparam \n"; +char *D_800ECCEC = ": sparam \n"; // Reason: sb_ok -char *D_800ECCFC = "理由: sb_ok \n"; +char *D_800ECCFC = ": sb_ok \n"; char *D_800ECD0C = "S_BANANA RELEASE (num %d time %d )\n"; // <<< FAKE IBOX SET failed >>> obj_num %d -char *D_800ECD34 = "<<< FAKE IBOX SET 失敗 >>> obj_num %d \n"; +char *D_800ECD34 = "<<< FAKE IBOX SET 紊掩 >>> obj_num %d \n"; // IBOX Caught in owner check. (num %d) -char *D_800ECD5C = "IBOX 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800ECD5C = "IBOX с綣f障(num %d)\n"; // Reason: EXISTOBJ -char *D_800ECD90 = "理由: EXISTOBJ \n"; +char *D_800ECD90 = ": EXISTOBJ \n"; // Reason: category -char *D_800ECDA4 = "理由: category \n"; +char *D_800ECDA4 = ": category \n"; // Reason: sparam -char *D_800ECDB8 = "理由: sparam \n"; +char *D_800ECDB8 = ": sparam \n"; // Reason: num -char *D_800ECDC8 = "理由: num \n"; +char *D_800ECDC8 = ": num \n"; char *D_800ECDD4 = "FBOX HOLD (num %d time %d hold_time %d)\n"; // Installation IBOX owner check failed. (num %d) -char *D_800ECE00 = "設置 IBOX 所有者チェックに引っ掛かりました。(num %d)\n"; +char *D_800ECE00 = "荐臀 IBOX с綣f障(num %d)\n"; // Reason: EXISTOBJ -char *D_800ECE38 = "理由: EXISTOBJ \n"; +char *D_800ECE38 = ": EXISTOBJ \n"; // Reason: category -char *D_800ECE4C = "理由: category \n"; +char *D_800ECE4C = ": category \n"; // Reason: sparam -char *D_800ECE60 = "理由: sparam \n"; +char *D_800ECE60 = ": sparam \n"; // Reason: num -char *D_800ECE70 = "理由: num \n"; +char *D_800ECE70 = ": num \n"; // Ray START (%d) -char *D_800ECE7C = "雷START (%d)\n"; +char *D_800ECE7C = "START (%d)\n"; // Ray END (%d) -char *D_800ECE8C = "雷END (%d)\n"; +char *D_800ECE8C = "END (%d)\n"; // ---------- Initialization of commendation table -char *D_800ECE98 = "---------- 表彰台初期化\n"; +char *D_800ECE98 = "---------- 茵綵医伾\n"; // map_number = %d -> 20 Rewriting. -char *D_800ECEB4 = "map_number = %d - > 20 書き換え中。\n"; +char *D_800ECEB4 = "map_number = %d - > 20 吾筝\n"; // OGA Recognition move begins -char *D_800ECEDC = "OGA 表彰 move 開始\n"; +char *D_800ECEDC = "OGA 茵綵 move 紮\n"; // I called the display of the 4th place person. -char *D_800ECEF0 = "4位の人の表示をコールしました。\n"; +char *D_800ECEF0 = "鐚篏篋冴茵腓冴潟若障\n"; // Arrive at the podium -char *D_800ECF14 = "表彰台に到着\n"; +char *D_800ECF14 = "茵綵医伹亥\n"; // Everyone gather! -char *D_800ECF24 = "全員集合!\n"; +char *D_800ECF24 = "♂鐚\n"; // Arrive on the road -char *D_800ECF30 = "道路に到着\n"; +char *D_800ECF30 = "莊亥\n"; // 4th place finished -char *D_800ECF3C = "4位の人終了\n"; +char *D_800ECF3C = "鐚篏篋榊篋\n"; // OGA commendation move end -char *D_800ECF4C = "OGA 表彰 move 終了\n"; +char *D_800ECF4C = "OGA 茵綵 move 腟篋\n"; char *D_800ECF60 = "OGAWA DEBUG DRAW\n"; s16 func_80005FD0(Vec3f arg0, Vec3f arg1) { diff --git a/src/credits.c b/src/credits.c index 3331dab3c..4dcc04a96 100644 --- a/src/credits.c +++ b/src/credits.c @@ -135,67 +135,67 @@ char *D_802854B0[] = { // Japanese Credits // Note that these are EUC-JP encoded, see: // https://en.wikipedia.org/wiki/Extended_Unix_Code#EUC-JP - "エグゼクティブ プロデューサー", - "やまうち ひろし", - "プロデューサー", - "みやもと しげる", - "ディレクター", - "こんの ひでき", - "アシスタント ディレクター", - "おおやぎ やすゆき", - "プログラマー", - "きむら まさと", - "やまもと けんじ", - "かわぐち やすひろ", - "おがわ ゆずる", - "かわの まさひろ", - "よしもと ひろひと", - "デモ シーケンス プログラマー", + "違若c ャ若泣", + "障 蚊", + "ャ若泣", + "帥 ", + "c帥", + " 蚊с", + "≪激鴻帥潟 c帥", + " ", + "違", + " 障", + "障 ", + " 蚊", + " ", + " 障蚊", + " 蚊蚊", + " 激若宴潟 違", "", - "やじま はじめ", - "かわごえ たくみ", - "ビジュアル ディレクター", - "すぎやま ただし", - "cg キャラクター デザイナー", + " ", + " ", + "吾ャ≪ c帥", + " ", + "cg c帥 吟ゃ", "", - "くろうめ ともあき", - "たけなか ひろあき", - "とよだ ときひこ", - "ひの しげふみ", - "ありもと まさなお", - "のがみ ひさし", - "cg マップ デザイナー", - "みやなが まこと", - "もり なおき", - "くわばら ひろやす", - "ミュージック コンポーザー", - "ながた けんた", - "サウンド プログラマー", - "ばんどう たろう", - "いながき ようじ", - "サンプリンング ボイス", - "こうづき あさこ", - "まるの ともこ", - "ちゃーるず まるてぃね", - "じゅりあん ばるだこふ", - "とます すぴんどらー", - "じょん ひゅーらとん", - "テクニカル サポート", - "さわの たかお", - "たかはし つよし", - "やだ ひろひと", - "プログレス マネージメント", - "ふくい きみよし", - "かとう けいぞう", - "スペシャル サンクス", - "さかい やすひろ", - "にしかわ よしたか", - "ふじい ひでき", - "なかの ゆうすけ", - "やまぐち わたる", - "にんてんどう じょーかい", - "すーぱー まりお くらぶ", - "れあ りみてっど", - " おしまい", - " まりおかーと64 すたっふ" + " ", + " 蚊", + " 蚊", + "蚊 泣", + " 障", + " 蚊", + "cg 吟ゃ", + "帥 障", + " ", + "違 蚊", + "ャ若吾 潟潟若吟", + " ", + "泣潟 違", + "違 ", + " ", + "泣潟潟潟 ゃ", + "ャ ", + "障 ", + "<若 障", + " 違", + "障 眼", + " 蚊若", + " 泣若", + " ", + " ゃ", + " 蚊蚊", + "違 若吾<潟", + "泣 帥", + " ", + "鴻激c 泣潟", + " 蚊", + " ", + "泣 蚊с", + " ", + "障 ", + " 若", + "若宴 障 ", + " 帥c", + " 障", + " 障若64 c" };