Zelda: The Wand of Gamelon - List of Functions
On the disc of Zelda: The Wand of Gamelon is a file called cdi_zelda. This file (and others like it) contain executable data that the Philips CD-i uses to play their Green Book-exclusive functionalities. While a good amount contain just machine code and leftovers from OptImage's Balboa routine library, others contain hidden text strings. Some of them are developer credits and messages (such as Dimo's Quest), while others have leftover error and debugging strings (like every single one of CapDisc's CD-i titles).
A few games, however, have a boatload of macro and function names/headers preserved within their executable file. Zelda: The Wand of Gamelon is in this group, and I'm proud to list them all for you.
Feel free to use this page as a reference when putting together your sick CD-i Zelda decompilations circa 2034 or so.
The List:
The function list is split across multiple chunks, spanning hex addresses A61
to 1CBB1
. Space between chunks will be marked with a gap between each one.
Yes, the game refers to Zelda internally as Link. Guess we know which game was developed first now!
check_for_key start_anim start_boss_first_anim open_up_area pick_up_perm_tool check_if_have_tool leave_item load_font font_draw color_font_draw font_erase signal_handler pre_bumper_video_init post_bumper_video_init wait_for_line_event align_buffers_and_tables init_cmap_addresses init_sprite_buffer_addresses init_table_widths flip_A clear_buffers initialize_cursor set_icf play_animations play_all_animations main set_dark_room open_rtrs fade_up_plane_AB fade_out_plane_AB fade_up_plane_B fade_up_plane_A fade_out_plane_A fade_out_plane_B init_rtr plane_A_over_B plane_B_over_A set_fctA_rl7 set_fctA_clut7 set_fctB_rl7 animation_flip_A screen_dimmer attenuation sattenuation init_audio load_effects restore_smaps start_music restart_music stop_music ac_process ac_signal_process play_sound stopsound (Stack overflow error message in this gap) check_for_restart get_abs_x init_combat kill_sprite kill_sprite_noflash check_combat_box check_box check_riding_box check_enemy_combat get_water_of_life check_sprite_collisions get_collision_result mmenu_init mmenu_choice new_mmenu mmenu_initial_clear mmenu_clear_area scroll_position mmenu_scroll_down mmenu_scroll_up mmenu_scroll_down_intermediate mmenu_scroll_up_intermediate mmenu_initial_draw mmenu_redraw mmenu_highlight_option mmenu_loop can_save_restore wait_for_menu_option create_file_and_host_names load_game_from_NVR nvr_avail save_game_to_NVR encode_mem_space decode_mem_space verify_save_space playfield demo_playfield init_playfield init_playfield_size convert_palette back_on_overworld back_on_playfield init_death death_loop start_continue update_death_pose death_loop_bottom draw_filled_rect draw_initial_death_screen draw_death_number erase_death_number read_sprite_cycle_colors2 read_bg_cycle_colors drop_sprite power_glove_blast power_glove_effect init_weapon update_pf_lct check_screen_edges old_get_sprite_block get_sprite_block restore_sprite_blocks write_sprite_blocks write_vert_blocks restore_vert_blocks reinit_lct_A reinit_lct_B inc_pf_x inc_pf_y dec_pf_x dec_pf_y init_sprites check_stick fix_jump_stick retrieve_help_state retrieve_mkt_demo get_input debounce_trig debounce_trig_music debounce_stick wait_for_button_press_music init_random randomize check_for_animation move_link handle_knockback init_sword_thrust sword_thrust end_thrust end_thrust_after_anim check_map_row straight_shot lob_shot lob_bomb check_map_while_walking move_1_block check_which_upward_motion check_which_downward_motion check_for_climb check_map_while_jump_descent jump_up jump_up_dir init_big_jump big_jump_up big_jump_down slide climb jump_off init_link init_rope using_rope check_for_rope_path draw_rope erase_rope go_find_hero_action set_link_position set_link_position_and_dir check_enemy_motion check_sleepers wake_on_chance get_new_image get_new_macro_image get_image_number move_types_1_and_3 finish_move set_walker move_type_4 check_for_alternate_macro set_alternate_macro do_alternate_macro end_alternate_macro move_type_2 move_type_5 restore_arkidai_path move_type_5_or_6_1_block init_enemies reinit_sprite main_init init_type_1 init_1_or_4 init_type_3 init_type_2 init_type_4 init_type_5 init_5_or_6 place_raft init_type_7 init_type_8 init_sprite_macros check_if_on_screen check_if_was_on_screen go_find_action erase_riding_paths get_random_bound init_error_buffer initial_areas show_label restore_label set_new_map check_world_hotspot noshow_label scroll_world get_help_instruction set_ov_help_off set_help_off set_mkt_demo_off delayed_wait do_mmenu_code quit_game init_map move_map flip_world_lcts zero_data_cil zero_video_cil play_error load_world load_playfield initial_load play_animation abort_rtrs play_overworld_music stop_overworld_music start_voice_over set_pcb set_pcl reset_pcl load_piracy start_playing_credits roll_credits play_background_animation flip_backgrounds load_backgrounds win_game play_title install_palette check_buttons clean_disc play_bumper prepare_mod_dir init_environment_projectiles clear_projectiles projectile_on_field init_projectile erase_projectiles update_projectiles check_projectiles draw_projectiles check_collisions reflect_projectile check_vulnerability check_map init_hit init_miss init_enemy_projectiles setup_projectile_types fill_tool_list add_to_tool_list check_lamp_highlight check_canteen_highlight call_subscreen get_first_item find_next_item highlight_item draw_selected_icon erase_selected_icon erase_item_name draw_item_name unhighlight_item icon_to_from_save_buffer draw_highlighted_icon scroll_on_subscreen scroll_off_subscreen draw_initial_subscreen draw_item draw_item_quantity draw_edge draw_border draw_outlined_box draw_an_item draw_other_items draw_sword draw_shield load_menu_icons initial_item_quantity use_item tell_what_got display_got_sign wait_got_sign take_out_got_sign display_clean_disc_sign my_sprintf update_tools delete_tool sprite_hits_tool draw_tools erase_tools create_playfield_tools add_bombs_to_buy add_fake_bombs add_ropes_to_buy add_fake_ropes add_oil_to_buy add_fake_oil add_to_playfield_tools load_tool_imagery check_tool_collision set_life_hearts hero_hit restore_life draw_life_hearts draw_heart erase_life_hearts mark_experience unmark_experience check_experience clear_area_experiences can_open_door bring_up_locked_sign take_out_locked_sign use_rubies display_rubies_sign wait_rubies_sign take_out_rubies_sign init_bread init_bomb explode_bomb init_bomb_hit light_lantern lantern_brightness dim_lantern blow_out_lantern buy_item more_items (Menu text data begins here. End of function list)
Return to top
Last updated: October 29th, 2024.