Skip to content
Open
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
14 changes: 9 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ ALL_LDFLAGS = -T $(LDSCRIPT) -L$(LIBDIR) -nostartfiles -specs=nosys.sp
ALL_LDLIBS = $(LDLIBS)
LUAFILE = $(EMUDIR)/Lua/patch-data.lua
RESDESC = $(RESDIR)/resources.json
GZ_VERSIONS = oot-1.0 oot-1.1 oot-1.2 oot-mq-j oot-mq-u oot-gc-j oot-gc-u oot-ce-j oot-ique-cn oot-1.0-vc oot-1.1-vc oot-1.2-vc oot-mq-j-vc oot-mq-u-vc oot-gc-j-vc oot-gc-u-vc oot-ce-j-vc
GZ_VERSIONS = oot-gc-eu oot-gc-eu-vc
GZ_ADDRESS = 80400000
SRCDIR = src
RESDIR = res
Expand All @@ -49,6 +49,7 @@ OBJ-OOT-GC-J = $(OBJ-gz-oot-gc-j) $(OBJ-gz-oot-gc-j-vc)
OBJ-OOT-GC-U = $(OBJ-gz-oot-gc-u) $(OBJ-gz-oot-gc-u-vc)
OBJ-OOT-CE-J = $(OBJ-gz-oot-ce-j) $(OBJ-gz-oot-ce-j-vc)
OBJ-OOT-IQUE-CN = $(OBJ-gz-oot-ique-cn)
OBJ-OOT-GC-EU = $(OBJ-gz-oot-gc-eu) $(OBJ-gz-oot-gc-eu-vc)
ELF-OOT-1.0 = $(ELF-gz-oot-1.0) $(ELF-gz-oot-1.0-vc)
ELF-OOT-1.1 = $(ELF-gz-oot-1.1) $(ELF-gz-oot-1.1-vc)
ELF-OOT-1.2 = $(ELF-gz-oot-1.2) $(ELF-gz-oot-1.2-vc)
Expand All @@ -57,11 +58,12 @@ ELF-OOT-MQ-U = $(ELF-gz-oot-mq-u) $(ELF-gz-oot-mq-u-vc)
ELF-OOT-GC-J = $(ELF-gz-oot-gc-j) $(ELF-gz-oot-gc-j-vc)
ELF-OOT-GC-U = $(ELF-gz-oot-gc-u) $(ELF-gz-oot-gc-u-vc)
ELF-OOT-CE-J = $(ELF-gz-oot-ce-j) $(ELF-gz-oot-ce-j-vc)
ELF-OOT-GC-EU = $(ELF-gz-oot-gc-eu) $(ELF-gz-oot-gc-eu-vc)
ELF-OOT-IQUE-CN = $(ELF-gz-oot-ique-cn)
OBJ-N64 = $(OBJ-gz-oot-1.0) $(OBJ-gz-oot-1.1) $(OBJ-gz-oot-1.2) $(OBJ-gz-oot-mq-j) $(OBJ-gz-oot-mq-u) $(OBJ-gz-oot-gc-j) $(OBJ-gz-oot-gc-u) $(OBJ-gz-oot-ce-j) $(OBJ-gz-oot-ique-cn)
OBJ-VC = $(OBJ-gz-oot-1.0-vc) $(OBJ-gz-oot-1.1-vc) $(OBJ-gz-oot-1.2-vc) $(OBJ-gz-oot-mq-j-vc) $(OBJ-gz-oot-mq-u-vc) $(OBJ-gz-oot-gc-j-vc) $(OBJ-gz-oot-gc-u-vc) $(OBJ-gz-oot-ce-j-vc)
ELF-N64 = $(ELF-gz-oot-1.0) $(ELF-gz-oot-1.1) $(ELF-gz-oot-1.2) $(ELF-gz-oot-mq-j) $(ELF-gz-oot-mq-u) $(ELF-gz-oot-gc-j) $(ELF-gz-oot-gc-u) $(ELF-gz-oot-ce-j) $(ELF-gz-oot-ique-cn)
ELF-VC = $(ELF-gz-oot-1.0-vc) $(ELF-gz-oot-1.1-vc) $(ELF-gz-oot-1.2-vc) $(ELF-gz-oot-mq-j-vc) $(ELF-gz-oot-mq-u-vc) $(ELF-gz-oot-gc-j-vc) $(ELF-gz-oot-gc-u-vc) $(ELF-gz-oot-ce-j-vc)
OBJ-N64 = $(OBJ-gz-oot-1.0) $(OBJ-gz-oot-1.1) $(OBJ-gz-oot-1.2) $(OBJ-gz-oot-mq-j) $(OBJ-gz-oot-mq-u) $(OBJ-gz-oot-gc-j) $(OBJ-gz-oot-gc-u) $(OBJ-gz-oot-ce-j) $(OBJ-gz-oot-ique-cn) $(OBJ-gz-oot-gc-eu)
OBJ-VC = $(OBJ-gz-oot-1.0-vc) $(OBJ-gz-oot-1.1-vc) $(OBJ-gz-oot-1.2-vc) $(OBJ-gz-oot-mq-j-vc) $(OBJ-gz-oot-mq-u-vc) $(OBJ-gz-oot-gc-j-vc) $(OBJ-gz-oot-gc-u-vc) $(OBJ-gz-oot-ce-j-vc) $(OBJ-gz-oot-gc-eu-vc)
ELF-N64 = $(ELF-gz-oot-1.0) $(ELF-gz-oot-1.1) $(ELF-gz-oot-1.2) $(ELF-gz-oot-mq-j) $(ELF-gz-oot-mq-u) $(ELF-gz-oot-gc-j) $(ELF-gz-oot-gc-u) $(ELF-gz-oot-ce-j) $(ELF-gz-oot-ique-cn) $(ELF-gz-oot-gc-eu)
ELF-VC = $(ELF-gz-oot-1.0-vc) $(ELF-gz-oot-1.1-vc) $(ELF-gz-oot-1.2-vc) $(ELF-gz-oot-mq-j-vc) $(ELF-gz-oot-mq-u-vc) $(ELF-gz-oot-gc-j-vc) $(ELF-gz-oot-gc-u-vc) $(ELF-gz-oot-ce-j-vc) $(ELF-gz-oot-gc-eu-vc)

GZ = $(foreach v,$(GZ_VERSIONS),gz-$(v))
HOOKS = $(foreach v,$(GZ_VERSIONS),gz-$(v)-hooks)
Expand Down Expand Up @@ -166,6 +168,7 @@ $(OBJ-OOT-GC-J) : ALL_CPPFLAGS += -DZ64_VERSION=Z64_OOTGCJ
$(OBJ-OOT-GC-U) : ALL_CPPFLAGS += -DZ64_VERSION=Z64_OOTGCU
$(OBJ-OOT-CE-J) : ALL_CPPFLAGS += -DZ64_VERSION=Z64_OOTCEJ
$(OBJ-OOT-IQUE-CN) : ALL_CPPFLAGS += -DZ64_VERSION=Z64_OOTIQC
$(OBJ-OOT-GC-EU) : ALL_CPPFLAGS += -DZ64_VERSION=Z64_OOTGCEU
$(ELF-OOT-1.0) : ALL_LDLIBS += -loot-1.0
$(ELF-OOT-1.1) : ALL_LDLIBS += -loot-1.1
$(ELF-OOT-1.2) : ALL_LDLIBS += -loot-1.2
Expand All @@ -175,6 +178,7 @@ $(ELF-OOT-GC-J) : ALL_LDLIBS += -loot-gc-j
$(ELF-OOT-GC-U) : ALL_LDLIBS += -loot-gc-u
$(ELF-OOT-CE-J) : ALL_LDLIBS += -loot-ce-j
$(ELF-OOT-IQUE-CN) : ALL_LDLIBS += -loot-ique-cn
$(ELF-OOT-GC-EU) : ALL_LDLIBS += -loot-gc-eu
ifeq '$(target)' 'mips64-ultra-elf'
$(OBJ-VC) : ALL_CFLAGS += -n64-wiivc
$(OBJ-VC) : ALL_CXXFLAGS += -n64-wiivc
Expand Down
2 changes: 2 additions & 0 deletions gsc/oot-gc-eu/mem_patch.gsc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
810004D4 3C02
810004D6 0040
Empty file.
186 changes: 186 additions & 0 deletions lib/liboot-gc-eu.a
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
entrypoint = 0x80000400 ;
__osPiGetAccess = 0x800019B0 ;
__osPiRelAccess = 0x800019F4 ;
osSendMesg = 0x80001A20 ;
osStopThread = 0x80001B70 ;
osRecvMesg = 0x80001C40 ;
osCreateThread = 0x80002F10 ;
osSetEventMesg = 0x80003BE0 ;
osCreateMesgQueue = 0x80003E10 ;
osStartThread = 0x80005C60 ;
z64_thread_idle = 0x80006590 ;
z64_thread_main = 0x80006F60 ;
z64_thread_dmamgr = 0x80007C28 ;
z64_file_mq = 0x80007B90 ;
__osEventStateTab = 0x80009C30 ;
__osViIntrCount = 0x80009CDC ;
z64_ftab = 0x8000AF90 ;
z64_Actor_UpdateBgCheckInfo = 0x80021C8C ;
z64_DrawActors = 0x8002490C ;
z64_SpawnActor = 0x80024F68 ;
z64_SpawnActorAttachedB = 0x80025248 ;
z64_CreateStaticCollision = 0x8002E4BC ;
z64_camera_hook = 0x800485FC ;
z64_Camera_ChangeMode = 0x80048EFC ;
z64_Math_SinS = 0x80063314 ;
z64_Math_CosS = 0x800632D4 ;
z64_LoadMinimap = 0x8006BAA4 ;
z64_SwitchAgeEquips = 0x8006F2BC ;
z64_UpdateItemButton = 0x8006F608 ;
z64_LoadActionLabel = 0x80071804 ;
z64_UpdateEquipment = 0x80079284 ;
z64_InitPauseObjects = 0x8007BBE4 ;
z64_LoadRoom = 0x80080588 ;
z64_room_load_sync_hook = 0x800806EC ;
z64_DrawRoom = 0x80080764 ;
z64_UnloadRoom = 0x800807B4 ;
z64_Sram_LoadDebugSave = 0x8008FE2C ;
z64_Io = 0x800912A4 ;
z64_CreateSkyGfx = 0x80095868 ;
z64_CreateSkyVtx = 0x80095A18 ;
z64_entrance_offset_hook = 0x8009A7BC ;
z64_srand_call = 0x8009AA08 ;
z64_draw_room_1_call = 0x8009C4E8 ;
z64_draw_room_2_call = 0x8009C500 ;
z64_draw_actors_call = 0x8009C5D4 ;
z64_StopSfx = 0x8009FE50 ;
z64_UpdateCtxtInput = 0x800A06D4 ;
z64_main_hook = 0x800A0728 ;
z64_disp_swap_1 = 0x800A0C48 ;
z64_disp_swap_2 = 0x800A0C60 ;
z64_disp_swap_3 = 0x800A0C78 ;
z64_disp_swap_4 = 0x800A0C94 ;
z64_frame_input_call = 0x800A118C ;
z64_ocarina_update_call = 0x800A131C ;
z64_GetInput = 0x800A221C ;
z64_AfxCmdF = 0x800BB9F8 ;
z64_AfxCmdW = 0x800BBA1C ;
z64_FlushAfxCmd = 0x800BBAA0 ;
z64_ConfigureAfx = 0x800BBEA8 ;
z64_AfxRand = 0x800BC6E0 ;
z64_ocarina_input_call = 0x800C2940 ;
z64_afx_rand_call = 0x800C4538 ;
z64_ocarina_sync = 0x800C4634 ;
z64_OcarinaUpdate = 0x800C48B0 ;
z64_ResetAudio = 0x800C8964 ;
z64_Audio_PlaySfxGeneral = 0x800C8B3C ;
z64_Audio_IsSfxPlaying = 0x800CA644 ;
z64_CheckAfxConfigBusy = 0x800CC268 ;
z64_LoadOverlay = 0x800CD500 ;
z64_SeedRandom = 0x800CE4B0 ;
z64_guPerspectiveF_hook = 0x800D10C8 ;
z64_guPerspective_camo = 0x800D1300 ;
osGetCurrFaultedThread = 0x800D6540 ;
z64_metronome_start_1 = 0x800DDF48 ;
z64_metronome_start_2 = 0x800DE230 ;
z64_metronome_check_1 = 0x800DE2A0 ;
z64_part_space = 0x800E49B0 ;
z64_part_pos = 0x800E49B4 ;
z64_part_max = 0x800E49B8 ;
z64_part_ovl_tab = 0x800E4AB0 ;
z64_actor_ovl_tab = 0x800E53A0 ;
z_camera_c_data = 0x800E8FE0 ;
z64_hud_state = 0x800EC018 ;
z64_event_state_1 = 0x800EC020 ;
z64_letterbox_time = 0x800EC068 ;
z64_event_state_2 = 0x800EC06C ;
z64_event_camera = 0x800EC0C4 ;
z64_oob_timer = 0x800EC51C ;
z64_cs_message = 0x800ECB40 ;
z64_state_ovl_tab = 0x800EE1B0 ;
z64_weather_state = 0x800EE4B0 ;
z64_day_speed = 0x800EE4C0 ;
z64_sky_images = 0x800EE6BC ;
z64_light_handlers = 0x800EE9B0 ;
z64_map_mark_ovl = 0x800EEA68 ;
z_onepointdemo_c_data = 0x800EEA80 ;
z64_dins_state_1 = 0x800EEA88 ;
z64_dins_state_2 = 0x800F1A8C ;
z64_minimap_entrance_x = 0x800F23A0 ;
z64_minimap_entrance_y = 0x800F23A4 ;
z64_minimap_entrance_r = 0x800F23A8 ;
z64_hazard_state = 0x800F43A8 ;
z64_temp_day_speed = 0x800F44B4 ;
z64_n_camera_shake = 0x800F4BA4 ;
z64_object_table = 0x800F5E78 ;
z64_entrance_table = 0x800F6B10 ;
z64_scene_table = 0x800F8360 ;
z64_scene_config_table = 0x800F8C44 ;
z64_letterbox_target = 0x800FB2F4 ;
z64_letterbox_current = 0x800FB2F8 ;
z64_play_ovl_tab = 0x800FB300 ;
z64_play_ovl_ptr = 0x800FB33C ;
code_800EC960_c_data = 0x800FE260 ;
z64_sound_state = 0x800FE2F4 ;
z64_night_sfx = 0x800FE3C8 ;
z64_ocarina_state = 0x800FEBF8 ;
z64_song_play_counter = z64_ocarina_state + 0x005C ;
z64_ocarina_song_length = z64_ocarina_state + 0x0068 ;
z64_scarecrow_song = 0x800FF3EC ;
z64_song_ptr = 0x800FF52C ;
z64_song_rec_counter = 0x800FF54C ;
z64_ocarina_button_state = 0x800FF56C ;
z64_sfx_write_pos = 0x80100D50 ;
z64_sfx_read_pos = 0x80100D54 ;
z64_audio_cmd_write_pos = 0x80100DA0 ;
z64_audio_cmd_read_pos = 0x80100DA4 ;
z64_afx_cfg = 0x80100DB0 ;
z64_afx_config_busy = 0x80100DB4 ;
z64_random = 0x80101E50 ;
z64_message_state = 0x801077E4 ;
z64_textbox_skipped = z64_message_state + 0xC ;
z64_staff_notes = 0x8010FE3C ;
z64_message_select_state = 0x8010FE74 ;
z64_message_icon_state = 0x8010FED0 ;
z64_message_note_icon_state = 0x801101C8 ;
z64_gameover_countdown = 0x80110260 ;
gspF3DEX2_NoN_fifoTextStart = 0x80111310 ;
gspF3DEX2_NoN_fifoDataStart = 0x80112940 ;
z64_pfx = 0x80113160 ;
z64_fw_state_1 = 0x80116F78 ;
z64_fw_state_2 = 0x80116F80 ;
z64_camera_state = 0x801171C0 ;
z64_file = 0x80118958 ;
z64_gameinfo = 0x80119D80 ;
z64_cs_state = 0x80119FA0 ;
z64_light_queue = 0x8011A0E0 ;
z64_game_arena = 0x8011A270 ;
z64_map_mark_data_tab = 0x8011A2A0 ;
z64_timer_state = 0x8011A2C0 ;
z64_camera_shake = 0x8011A300 ;
z64_poly_colorfilter_state = 0x8011B4E8 ;
z64_stab = 0x8011B668 ;
z64_thread_sched = 0x8011B718 ;
z64_thread_padmgr = 0x8011B980 ;
z64_input_direct = 0x8011BB30 ;
z64_thread_irqmgr = 0x8011BE00 ;
z64_thread_graph = 0x8011BFE8 ;
z64_thread_audio = 0x8011F320 ;
z64_mtx_stack = 0x8011F7C0 ;
z64_mtx_stack_top = 0x8011F7C4 ;
z64_thread_fault = 0x8011FDF8 ;
code_800EC960_c_bss = 0x80120770 ;
z64_song_state = 0x801208BC;
z64_ocarina_counter = z64_song_state + 0x0010 ;
z64_sfx_mute = 0x80123104 ;
z64_audio_cmd_buf = 0x801231B0 ;
z64_seq_ctl = 0x801235B0 ;
z64_afx = 0x80123FE0 ;
z64_afx_counter = z64_afx + 0x289C ;
z64_afx_cmd_write_pos = z64_afx + 0x5BD8 ;
z64_afx_cmd_read_pos = z64_afx + 0x5BD9 ;
z64_afx_cmd_buf = z64_afx + 0x5C50 ;
z_message_c_bss = 0x8012A800 ;
z64_zimg = 0x8012A840 ;
z64_disp = 0x80169040 ;
z64_ctxt = 0x801C6E60 ;
z64_game = z64_ctxt ;
z64_link = 0x801D93B0 ;
z64_cimg = 0x803B5000 ;
z64_item_highlight_vram = 0x80828824 ;
ovl_En_Skj = 0x80ADD870 ;
z64_metronome_check_2 = ovl_En_Skj + 0x29F4 ;
z64_metronome_check_3 = ovl_En_Skj + 0x2A3C ;
z64_metronome_check_4 = ovl_En_Skj + 0x2AC4 ;
ovl_En_Bom_Chu = 0x809B2180 ;
z64_bombchu_floor_poly_hook = ovl_En_Bom_Chu + 0x654 ;
21 changes: 21 additions & 0 deletions lua/rom_table.lua
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,27 @@ rom_table =
patches = { "mem_patch", "ups_size_patch" },
title_id = "NGEJ",
},
[0x3FBD519F] = {
game = "oot",
version = "gc",
region = "eu",
boot_ind = 1,
boot_ram = 0x80000460,
code_ind = 28,
code_ram = 0x80010F00,
ovl_tbls = {
part = { addr = 0x800E4AB0 },
actor = { addr = 0x800E53A0 },
state = { addr = 0x800EE1B0 },
map_mark = { addr = 0x800EEA68 },
play = { addr = 0x800FB300 },
},
data_dir = "oot-gc-eu",
gz_version = "oot-gc-eu" .. version_suffix,
gz_name = "gz-oot-gc-eu" .. version_suffix,
patches = { "mem_patch", "ups_size_patch" },
title_id = "NGPL",
},
[0xF45C5532] = {
game = "oot",
version = "ique",
Expand Down
2 changes: 2 additions & 0 deletions src/gz/gz_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
#define LANGS "japanese\0""english\0"
#elif Z64_VERSION == Z64_OOTIQC
#define LANGS "japanese\0""chinese\0"
#elif Z64_VERSION == Z64_OOTGCEU
#define LANGS "english\0""french\0""german\0"
#endif

static int byte_mod_proc(struct menu_item *item,
Expand Down
3 changes: 2 additions & 1 deletion src/gz/input.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ const uint32_t input_button_color[] =
Z64_VERSION == Z64_OOTMQU || \
Z64_VERSION == Z64_OOTGCJ || \
Z64_VERSION == Z64_OOTGCU || \
Z64_VERSION == Z64_OOTCEJ
Z64_VERSION == Z64_OOTCEJ || \
Z64_VERSION == Z64_OOTGCEU
0x787878,
0xC0C0C0,
0xFF1E1E,
Expand Down
3 changes: 2 additions & 1 deletion src/gz/ldr.S
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
Z64_VERSION == Z64_OOTMQU || \
Z64_VERSION == Z64_OOTGCJ || \
Z64_VERSION == Z64_OOTGCU || \
Z64_VERSION == Z64_OOTCEJ
Z64_VERSION == Z64_OOTCEJ || \
Z64_VERSION == Z64_OOTGCEU
.equ entry_size, 0x60
#elif Z64_VERSION == Z64_OOTIQC
.equ entry_size, 0x50
Expand Down
23 changes: 16 additions & 7 deletions src/gz/state.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ static void save_ovl(void **p, void *addr,
Z64_VERSION == Z64_OOTGCJ || \
Z64_VERSION == Z64_OOTGCU || \
Z64_VERSION == Z64_OOTCEJ || \
Z64_VERSION == Z64_OOTGCEU || \
Z64_VERSION == Z64_OOTIQC
z64_ovl_hdr_t l_hdr;
hdr = &l_hdr;
Expand Down Expand Up @@ -165,6 +166,7 @@ static void load_ovl(void **p, void **p_addr,
Z64_VERSION == Z64_OOTGCJ || \
Z64_VERSION == Z64_OOTGCU || \
Z64_VERSION == Z64_OOTCEJ || \
Z64_VERSION == Z64_OOTGCEU || \
Z64_VERSION == Z64_OOTIQC
z64_ovl_hdr_t l_hdr;
hdr = &l_hdr;
Expand Down Expand Up @@ -1282,6 +1284,7 @@ uint32_t save_state(struct state_meta *state)
Z64_VERSION == Z64_OOTGCJ || \
Z64_VERSION == Z64_OOTGCU || \
Z64_VERSION == Z64_OOTCEJ || \
Z64_VERSION == Z64_OOTGCEU || \
Z64_VERSION == Z64_OOTIQC
serial_write(&p, &code_800EC960_c_data[0x0998], 0x0060); /* 12b overhead */
serial_write(&p, &code_800EC960_c_data[0x0A00], 0x0008);
Expand Down Expand Up @@ -1757,14 +1760,19 @@ void load_state(const struct state_meta *state)
zu_getfile(vaddr, z64_game.pause_ctxt.name_texture, 0x0400);
}
}
if (z64_file.language == 0) {
zu_getfile_idx(z64_icon_item_jpn_static,
z64_game.pause_ctxt.icon_item_lang);
}
else {
zu_getfile_idx(z64_icon_item_nes_static,
#if Z64_VERSION == Z64_OOTGCEU
zu_getfile_idx(z64_icon_item_nes_static,
z64_game.pause_ctxt.icon_item_lang);
}
#else
if (z64_file.language == 0) {
zu_getfile_idx(z64_icon_item_jpn_static,
z64_game.pause_ctxt.icon_item_lang);
}
else {
zu_getfile_idx(z64_icon_item_nes_static,
z64_game.pause_ctxt.icon_item_lang);
}
#endif
zu_getfile_idx(z64_icon_item_static, z64_game.pause_ctxt.icon_item);
zu_getfile_idx(z64_icon_item_24_static, z64_game.pause_ctxt.icon_item_24);
/* gray out restricted items */
Expand Down Expand Up @@ -2269,6 +2277,7 @@ void load_state(const struct state_meta *state)
Z64_VERSION == Z64_OOTGCJ || \
Z64_VERSION == Z64_OOTGCU || \
Z64_VERSION == Z64_OOTCEJ || \
Z64_VERSION == Z64_OOTGCEU || \
Z64_VERSION == Z64_OOTIQC
serial_read(&p, &code_800EC960_c_data[0x0998], 0x0060); /* 12b overhead */
serial_read(&p, &code_800EC960_c_data[0x0A00], 0x0008);
Expand Down
Loading