diff --git a/CMakeLists.txt b/CMakeLists.txt index 437f138699..bbe0800273 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,11 @@ endif () set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) + +option(DUSK_BUILD_WARNINGS "If off, compiler warnings will be suppressed") if (CMAKE_SYSTEM_NAME STREQUAL Linux) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter") @@ -23,1341 +28,30 @@ elseif (APPLE) set(CMAKE_BUILD_RPATH "$ORIGIN") elseif (MSVC) add_compile_options(/bigobj) + add_compile_options(/Zc:strictStrings-) + add_compile_options(/MP) + if (NOT DUSK_BUILD_WARNINGS) + add_compile_options(/W0) + endif () + add_compile_options(/utf-8) +endif () +if (NOT MSVC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error -Wno-c++11-narrowing") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-c++11-narrowing") endif () -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error -Wno-c++11-narrowing") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-c++11-narrowing") -add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) - -set(DOLZEL_FILES - src/m_Do/m_Do_main.cpp - src/m_Do/m_Do_printf.cpp - src/m_Do/m_Do_audio.cpp - src/m_Do/m_Do_controller_pad.cpp - #src/m_Do/m_Re_controller_pad.cpp - src/m_Do/m_Do_graphic.cpp - src/m_Do/m_Do_machine.cpp - src/m_Do/m_Do_mtx.cpp - src/m_Do/m_Do_ext.cpp - src/m_Do/m_Do_lib.cpp - src/m_Do/m_Do_Reset.cpp - src/m_Do/m_Do_dvd_thread.cpp - src/m_Do/m_Do_DVDError.cpp - src/m_Do/m_Do_MemCard.cpp - src/m_Do/m_Do_MemCardRWmng.cpp - src/m_Do/m_Do_machine_exception.cpp - src/m_Do/m_Do_hostIO.cpp - src/c/c_damagereaction.cpp - src/c/c_dylink.cpp - src/f_ap/f_ap_game.cpp - src/f_op/f_op_actor.cpp - src/f_op/f_op_actor_iter.cpp - src/f_op/f_op_actor_tag.cpp - src/f_op/f_op_camera.cpp - src/f_op/f_op_actor_mng.cpp - src/f_op/f_op_camera_mng.cpp - src/f_op/f_op_overlap.cpp - src/f_op/f_op_overlap_mng.cpp - src/f_op/f_op_overlap_req.cpp - src/f_op/f_op_scene.cpp - src/f_op/f_op_scene_iter.cpp - src/f_op/f_op_scene_mng.cpp - src/f_op/f_op_scene_req.cpp - src/f_op/f_op_scene_tag.cpp - src/f_op/f_op_view.cpp - src/f_op/f_op_kankyo.cpp - src/f_op/f_op_msg.cpp - src/f_op/f_op_kankyo_mng.cpp - src/f_op/f_op_msg_mng.cpp - src/f_op/f_op_draw_iter.cpp - src/f_op/f_op_draw_tag.cpp - src/f_op/f_op_scene_pause.cpp - src/f_pc/f_pc_base.cpp - src/f_pc/f_pc_create_iter.cpp - src/f_pc/f_pc_create_req.cpp - src/f_pc/f_pc_create_tag.cpp - src/f_pc/f_pc_creator.cpp - src/f_pc/f_pc_delete_tag.cpp - src/f_pc/f_pc_deletor.cpp - src/f_pc/f_pc_draw_priority.cpp - src/f_pc/f_pc_executor.cpp - src/f_pc/f_pc_layer.cpp - src/f_pc/f_pc_leaf.cpp - src/f_pc/f_pc_layer_iter.cpp - src/f_pc/f_pc_layer_tag.cpp - src/f_pc/f_pc_line.cpp - src/f_pc/f_pc_load.cpp - src/f_pc/f_pc_manager.cpp - src/f_pc/f_pc_method.cpp - src/f_pc/f_pc_node.cpp - src/f_pc/f_pc_node_req.cpp - src/f_pc/f_pc_priority.cpp - src/f_pc/f_pc_profile.cpp - src/f_pc/f_pc_searcher.cpp - src/f_pc/f_pc_line_tag.cpp - src/f_pc/f_pc_line_iter.cpp - src/f_pc/f_pc_method_iter.cpp - src/f_pc/f_pc_method_tag.cpp - src/f_pc/f_pc_pause.cpp - src/f_pc/f_pc_draw.cpp - src/f_pc/f_pc_fstcreate_req.cpp - src/f_pc/f_pc_stdcreate_req.cpp - src/f_pc/f_pc_debug_sv.cpp - src/d/d_stage.cpp - src/d/d_map.cpp - src/d/d_com_inf_game.cpp - src/d/d_com_static.cpp - src/d/d_com_inf_actor.cpp - src/d/d_bomb.cpp - src/d/d_lib.cpp - src/d/d_save.cpp - src/d/d_save_init.cpp - src/d/d_jnt_col.cpp - src/d/d_a_obj.cpp - src/d/d_a_itembase_static.cpp - src/d/d_a_item_static.cpp - src/d/d_a_shop_item_static.cpp - src/d/d_a_horse_static.cpp - src/d/d_demo.cpp - src/d/d_door_param2.cpp - src/d/d_resorce.cpp - src/d/d_map_path.cpp - src/d/d_map_path_fmap.cpp - src/d/d_map_path_dmap.cpp - src/d/d_event.cpp - src/d/d_event_data.cpp - src/d/d_event_manager.cpp - src/d/d_event_lib.cpp - src/d/d_simple_model.cpp - src/d/d_particle.cpp - src/d/d_particle_name.cpp - src/d/d_particle_copoly.cpp - src/d/d_path.cpp - src/d/d_drawlist.cpp - src/d/d_kankyo_data.cpp - src/d/d_kankyo_wether.cpp - src/d/d_kankyo_rain.cpp - src/d/d_kankyo_debug.cpp - src/d/d_vibration.cpp - src/d/d_vib_pattern.cpp - src/d/d_attention.cpp - src/d/d_bg_parts.cpp - src/d/d_bg_pc.cpp - src/d/d_att_dist.cpp - src/d/d_bg_plc.cpp - src/d/d_bg_s.cpp - src/d/d_bg_s_acch.cpp - src/d/d_bg_s_chk.cpp - src/d/d_bg_s_gnd_chk.cpp - src/d/d_bg_s_grp_pass_chk.cpp - src/d/d_bg_s_lin_chk.cpp - src/d/d_bg_s_movebg_actor.cpp - src/d/d_bg_s_sph_chk.cpp - src/d/d_bg_s_spl_grp_chk.cpp - src/d/d_bg_s_poly_pass_chk.cpp - src/d/d_bg_s_roof_chk.cpp - src/d/d_bg_s_wtr_chk.cpp - src/d/d_bg_w.cpp - src/d/d_bg_w_base.cpp - src/d/d_bg_w_kcol.cpp - src/d/d_bg_w_sv.cpp - src/d/d_cc_d.cpp - src/d/d_cc_mass_s.cpp - src/d/d_cc_s.cpp - src/d/d_cc_uty.cpp - src/d/d_cam_param.cpp - src/d/d_ev_camera.cpp - src/d/d_spline_path.cpp - src/d/d_item_data.cpp - src/d/d_item.cpp - src/d/d_tresure.cpp - src/d/d_model.cpp - src/d/d_eye_hl.cpp - src/d/d_error_msg.cpp - src/d/d_debug_viewer.cpp - src/d/d_debug_camera.cpp - src/d/actor/d_a_alink.cpp - src/d/actor/d_a_itembase.cpp - src/d/actor/d_a_no_chg_room.cpp - src/d/actor/d_a_npc.cpp - src/d/actor/d_a_npc_cd.cpp - src/d/actor/d_a_npc_cd2.cpp - src/d/actor/d_a_obj_item.cpp - src/d/d_insect.cpp - src/d/actor/d_a_obj_ss_base.cpp - src/d/actor/d_a_player.cpp - src/d/d_camera.cpp - src/d/d_envse.cpp - src/d/d_file_select.cpp - src/d/d_file_sel_warning.cpp - src/d/d_file_sel_info.cpp - src/d/d_bright_check.cpp - src/d/d_scope.cpp - src/d/d_select_cursor.cpp - src/d/d_select_icon.cpp - src/d/d_shop_camera.cpp - src/d/d_shop_item_ctrl.cpp - src/d/d_shop_system.cpp - src/d/d_gameover.cpp - src/d/d_kankyo.cpp - src/d/d_kyeff.cpp - src/d/d_kyeff2.cpp - src/d/d_ky_thunder.cpp - src/d/d_kantera_icon_meter.cpp - src/d/d_menu_calibration.cpp - src/d/d_menu_collect.cpp - src/d/d_menu_dmap.cpp - src/d/d_menu_dmap_map.cpp - src/d/d_menu_map_common.cpp - src/d/d_menu_fishing.cpp - src/d/d_menu_fmap.cpp - src/d/d_menu_fmap_map.cpp - src/d/d_menu_fmap2D.cpp - src/d/d_menu_insect.cpp - src/d/d_menu_item_explain.cpp - src/d/d_menu_letter.cpp - src/d/d_menu_option.cpp - src/d/d_menu_ring.cpp - src/d/d_menu_save.cpp - src/d/d_menu_skill.cpp - src/d/d_menu_window_HIO.cpp - src/d/d_menu_window.cpp - src/d/d_meter_HIO.cpp - src/d/d_meter_button.cpp - src/d/d_meter_haihai.cpp - src/d/d_meter_hakusha.cpp - src/d/d_meter_map.cpp - src/d/d_meter_string.cpp - src/d/d_meter2_draw.cpp - src/d/d_meter2_info.cpp - src/d/d_meter2.cpp - src/d/d_msg_out_font.cpp - src/d/d_msg_class.cpp - src/d/d_msg_object.cpp - src/d/d_msg_unit.cpp - src/d/d_msg_scrn_3select.cpp - src/d/d_msg_scrn_arrow.cpp - src/d/d_msg_scrn_base.cpp - src/d/d_msg_scrn_boss.cpp - src/d/d_msg_scrn_explain.cpp - src/d/d_msg_scrn_item.cpp - src/d/d_msg_scrn_howl.cpp - src/d/d_msg_scrn_jimaku.cpp - src/d/d_msg_scrn_kanban.cpp - src/d/d_msg_scrn_light.cpp - src/d/d_msg_scrn_place.cpp - src/d/d_msg_scrn_staff.cpp - src/d/d_msg_scrn_talk.cpp - src/d/d_msg_scrn_tree.cpp - src/d/d_msg_string_base.cpp - src/d/d_msg_string.cpp - src/d/d_msg_flow.cpp - src/d/d_name.cpp - src/d/d_npc_lib.cpp - src/d/d_ovlp_fade.cpp - src/d/d_ovlp_fade2.cpp - src/d/d_ovlp_fade3.cpp - src/d/d_pane_class.cpp - src/d/d_pane_class_alpha.cpp - src/d/d_pane_class_ex.cpp - src/d/d_s_logo.cpp - src/d/d_s_menu.cpp - src/d/d_s_name.cpp - src/d/d_s_play.cpp - src/d/d_s_room.cpp - src/d/d_s_title.cpp - src/d/d_save_HIO.cpp - src/d/d_timer.cpp - src/d/d_k_wmark.cpp - src/d/d_k_wpillar.cpp - src/DynamicLink.cpp - src/CaptureScreen.cpp - ) -if(DEBUG) -list(APPEND DOLZEL_FILES src/d/d_event_debug.cpp) -endif(DEBUG) - -set(Z2AUDIOLIB_FILES - src/Z2AudioLib/Z2Calc.cpp - src/Z2AudioLib/Z2AudioArcLoader.cpp - src/Z2AudioLib/Z2Param.cpp - src/Z2AudioLib/Z2SoundMgr.cpp - src/Z2AudioLib/Z2SoundStarter.cpp - src/Z2AudioLib/Z2SoundHandles.cpp - src/Z2AudioLib/Z2SeMgr.cpp - src/Z2AudioLib/Z2SeqMgr.cpp - src/Z2AudioLib/Z2StatusMgr.cpp - src/Z2AudioLib/Z2SceneMgr.cpp - src/Z2AudioLib/Z2FxLineMgr.cpp - src/Z2AudioLib/Z2SoundInfo.cpp - src/Z2AudioLib/Z2Audience.cpp - src/Z2AudioLib/Z2SoundObject.cpp - src/Z2AudioLib/Z2SoundObjMgr.cpp - src/Z2AudioLib/Z2Creature.cpp - src/Z2AudioLib/Z2LinkMgr.cpp - src/Z2AudioLib/Z2EnvSeMgr.cpp - src/Z2AudioLib/Z2WolfHowlMgr.cpp - src/Z2AudioLib/Z2SpeechMgr2.cpp - src/Z2AudioLib/Z2AudioMgr.cpp - ) - -set(SSYSTEM_FILES - src/SSystem/SComponent/c_malloc.cpp - src/SSystem/SComponent/c_API.cpp - src/SSystem/SComponent/c_API_controller_pad.cpp - src/SSystem/SComponent/c_API_graphic.cpp - src/SSystem/SComponent/c_cc_d.cpp - src/SSystem/SComponent/c_cc_s.cpp - src/SSystem/SComponent/c_counter.cpp - src/SSystem/SComponent/c_list.cpp - src/SSystem/SComponent/c_list_iter.cpp - src/SSystem/SComponent/c_node.cpp - src/SSystem/SComponent/c_node_iter.cpp - src/SSystem/SComponent/c_tree.cpp - src/SSystem/SComponent/c_tree_iter.cpp - src/SSystem/SComponent/c_phase.cpp - src/SSystem/SComponent/c_request.cpp - src/SSystem/SComponent/c_tag.cpp - src/SSystem/SComponent/c_tag_iter.cpp - src/SSystem/SComponent/c_xyz.cpp - src/SSystem/SComponent/c_sxyz.cpp - src/SSystem/SComponent/c_math.cpp - src/SSystem/SComponent/c_bg_s_chk.cpp - src/SSystem/SComponent/c_bg_s_gnd_chk.cpp - src/SSystem/SComponent/c_bg_s_lin_chk.cpp - src/SSystem/SComponent/c_bg_s_shdw_draw.cpp - src/SSystem/SComponent/c_bg_s_poly_info.cpp - src/SSystem/SComponent/c_bg_w.cpp - src/SSystem/SComponent/c_m2d.cpp - src/SSystem/SComponent/c_m3d.cpp - src/SSystem/SComponent/c_m3d_g_aab.cpp - src/SSystem/SComponent/c_m3d_g_cir.cpp - src/SSystem/SComponent/c_m3d_g_cps.cpp - src/SSystem/SComponent/c_m3d_g_cyl.cpp - src/SSystem/SComponent/c_m3d_g_lin.cpp - src/SSystem/SComponent/c_m3d_g_pla.cpp - src/SSystem/SComponent/c_m3d_g_sph.cpp - src/SSystem/SComponent/c_m3d_g_tri.cpp - src/SSystem/SComponent/c_m3d_g_vtx.cpp - src/SSystem/SComponent/c_lib.cpp - src/SSystem/SComponent/c_angle.cpp - src/SSystem/SStandard/s_basic.cpp - ) - -set(JSYSTEM_FILES - src/JSystem/JFramework/JFWSystem.cpp - src/JSystem/JFramework/JFWDisplay.cpp - src/JSystem/J3DU/J3DUClipper.cpp - src/JSystem/J3DU/J3DUDL.cpp - src/JSystem/JParticle/JPAResourceManager.cpp - src/JSystem/JParticle/JPAResource.cpp - src/JSystem/JParticle/JPABaseShape.cpp - src/JSystem/JParticle/JPAExtraShape.cpp - src/JSystem/JParticle/JPAChildShape.cpp - src/JSystem/JParticle/JPAExTexShape.cpp - src/JSystem/JParticle/JPADynamicsBlock.cpp - src/JSystem/JParticle/JPAFieldBlock.cpp - src/JSystem/JParticle/JPAKeyBlock.cpp - src/JSystem/JParticle/JPATexture.cpp - src/JSystem/JParticle/JPAResourceLoader.cpp - src/JSystem/JParticle/JPAEmitterManager.cpp - src/JSystem/JParticle/JPAEmitter.cpp - src/JSystem/JParticle/JPAParticle.cpp - src/JSystem/JParticle/JPAMath.cpp - src/JSystem/JStage/JSGActor.cpp - src/JSystem/JStage/JSGAmbientLight.cpp - src/JSystem/JStage/JSGCamera.cpp - src/JSystem/JStage/JSGFog.cpp - src/JSystem/JStage/JSGLight.cpp - src/JSystem/JStage/JSGObject.cpp - src/JSystem/JStage/JSGSystem.cpp - src/JSystem/JStudio/JStudio/ctb.cpp - src/JSystem/JStudio/JStudio/ctb-data.cpp - src/JSystem/JStudio/JStudio/functionvalue.cpp - src/JSystem/JStudio/JStudio/fvb.cpp - src/JSystem/JStudio/JStudio/fvb-data.cpp - src/JSystem/JStudio/JStudio/fvb-data-parse.cpp - src/JSystem/JStudio/JStudio/jstudio-control.cpp - src/JSystem/JStudio/JStudio/jstudio-data.cpp - src/JSystem/JStudio/JStudio/jstudio-math.cpp - src/JSystem/JStudio/JStudio/jstudio-object.cpp - src/JSystem/JStudio/JStudio/object-id.cpp - src/JSystem/JStudio/JStudio/stb.cpp - src/JSystem/JStudio/JStudio/stb-data-parse.cpp - src/JSystem/JStudio/JStudio/stb-data.cpp - src/JSystem/JStudio/JStudio_JStage/control.cpp - src/JSystem/JStudio/JStudio_JStage/object.cpp - src/JSystem/JStudio/JStudio_JStage/object-actor.cpp - src/JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp - src/JSystem/JStudio/JStudio_JStage/object-camera.cpp - src/JSystem/JStudio/JStudio_JStage/object-fog.cpp - src/JSystem/JStudio/JStudio_JStage/object-light.cpp - src/JSystem/JStudio/JStudio_JAudio2/control.cpp - src/JSystem/JStudio/JStudio_JAudio2/object-sound.cpp - src/JSystem/JStudio/JStudio_JParticle/control.cpp - src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp - src/JSystem/JAudio2/JASCalc.cpp - src/JSystem/JAudio2/JASTaskThread.cpp - src/JSystem/JAudio2/JASDvdThread.cpp - src/JSystem/JAudio2/JASCallback.cpp - src/JSystem/JAudio2/JASHeapCtrl.cpp - src/JSystem/JAudio2/JASResArcLoader.cpp - src/JSystem/JAudio2/JASProbe.cpp - src/JSystem/JAudio2/JASReport.cpp - src/JSystem/JAudio2/JASCmdStack.cpp - src/JSystem/JAudio2/JASTrack.cpp - src/JSystem/JAudio2/JASTrackPort.cpp - src/JSystem/JAudio2/JASRegisterParam.cpp - src/JSystem/JAudio2/JASSeqCtrl.cpp - src/JSystem/JAudio2/JASSeqParser.cpp - src/JSystem/JAudio2/JASSeqReader.cpp - src/JSystem/JAudio2/JASAramStream.cpp - src/JSystem/JAudio2/JASBank.cpp - src/JSystem/JAudio2/JASBasicBank.cpp - src/JSystem/JAudio2/JASVoiceBank.cpp - src/JSystem/JAudio2/JASBasicInst.cpp - src/JSystem/JAudio2/JASDrumSet.cpp - src/JSystem/JAudio2/JASBasicWaveBank.cpp - src/JSystem/JAudio2/JASSimpleWaveBank.cpp - src/JSystem/JAudio2/JASWSParser.cpp - src/JSystem/JAudio2/JASBNKParser.cpp - src/JSystem/JAudio2/JASWaveArcLoader.cpp - src/JSystem/JAudio2/JASChannel.cpp - src/JSystem/JAudio2/JASLfo.cpp - src/JSystem/JAudio2/JASOscillator.cpp - src/JSystem/JAudio2/JASAiCtrl.cpp - src/JSystem/JAudio2/JASAudioThread.cpp - src/JSystem/JAudio2/JASAudioReseter.cpp - src/JSystem/JAudio2/JASDSPChannel.cpp - src/JSystem/JAudio2/JASDSPInterface.cpp - src/JSystem/JAudio2/JASDriverIF.cpp - src/JSystem/JAudio2/JASSoundParams.cpp - src/JSystem/JAudio2/dspproc.cpp - src/JSystem/JAudio2/dsptask.cpp - src/JSystem/JAudio2/osdsp.cpp - src/JSystem/JAudio2/osdsp_task.cpp - src/JSystem/JAudio2/JAIAudible.cpp - src/JSystem/JAudio2/JAIAudience.cpp - src/JSystem/JAudio2/JAISe.cpp - src/JSystem/JAudio2/JAISeMgr.cpp - src/JSystem/JAudio2/JAISeq.cpp - src/JSystem/JAudio2/JAISeqDataMgr.cpp - src/JSystem/JAudio2/JAISeqMgr.cpp - src/JSystem/JAudio2/JAISound.cpp - src/JSystem/JAudio2/JAISoundChild.cpp - src/JSystem/JAudio2/JAISoundHandles.cpp - src/JSystem/JAudio2/JAISoundInfo.cpp - src/JSystem/JAudio2/JAISoundParams.cpp - src/JSystem/JAudio2/JAISoundStarter.cpp - src/JSystem/JAudio2/JAIStream.cpp - src/JSystem/JAudio2/JAIStreamDataMgr.cpp - src/JSystem/JAudio2/JAIStreamMgr.cpp - src/JSystem/JAudio2/JAUAudioArcInterpreter.cpp - src/JSystem/JAudio2/JAUAudioArcLoader.cpp - src/JSystem/JAudio2/JAUAudioMgr.cpp - src/JSystem/JAudio2/JAUBankTable.cpp - src/JSystem/JAudio2/JAUClusterSound.cpp - src/JSystem/JAudio2/JAUInitializer.cpp - src/JSystem/JAudio2/JAUSectionHeap.cpp - src/JSystem/JAudio2/JAUSeqCollection.cpp - src/JSystem/JAudio2/JAUSeqDataBlockMgr.cpp - src/JSystem/JAudio2/JAUSoundAnimator.cpp - src/JSystem/JAudio2/JAUSoundTable.cpp - src/JSystem/JAudio2/JAUStreamFileTable.cpp - src/JSystem/JMessage/control.cpp - src/JSystem/JMessage/data.cpp - src/JSystem/JMessage/processor.cpp - src/JSystem/JMessage/resource.cpp - src/JSystem/JMessage/locale.cpp - src/JSystem/JKernel/JKRHeap.cpp - src/JSystem/JKernel/JKRExpHeap.cpp - src/JSystem/JKernel/JKRSolidHeap.cpp - src/JSystem/JKernel/JKRAssertHeap.cpp - src/JSystem/JKernel/JKRDisposer.cpp - src/JSystem/JKernel/JKRThread.cpp - src/JSystem/JKernel/JKRAram.cpp - src/JSystem/JKernel/JKRAramHeap.cpp - src/JSystem/JKernel/JKRAramBlock.cpp - src/JSystem/JKernel/JKRAramPiece.cpp - src/JSystem/JKernel/JKRAramStream.cpp - src/JSystem/JKernel/JKRFileLoader.cpp - src/JSystem/JKernel/JKRFileFinder.cpp - src/JSystem/JKernel/JKRFileCache.cpp - src/JSystem/JKernel/JKRArchivePub.cpp - src/JSystem/JKernel/JKRArchivePri.cpp - src/JSystem/JKernel/JKRMemArchive.cpp - src/JSystem/JKernel/JKRAramArchive.cpp - src/JSystem/JKernel/JKRDvdArchive.cpp - src/JSystem/JKernel/JKRCompArchive.cpp - src/JSystem/JKernel/JKRFile.cpp - src/JSystem/JKernel/JKRDvdFile.cpp - src/JSystem/JKernel/JKRDvdRipper.cpp - src/JSystem/JKernel/JKRDvdAramRipper.cpp - src/JSystem/JKernel/JKRDecomp.cpp - src/JSystem/JSupport/JSUList.cpp - src/JSystem/JSupport/JSUInputStream.cpp - src/JSystem/JSupport/JSUOutputStream.cpp - src/JSystem/JSupport/JSUMemoryStream.cpp - src/JSystem/JSupport/JSUFileStream.cpp - src/JSystem/JGadget/binary.cpp - src/JSystem/JGadget/linklist.cpp - src/JSystem/JGadget/std-vector.cpp - src/JSystem/JUtility/JUTCacheFont.cpp - src/JSystem/JUtility/JUTResource.cpp - src/JSystem/JUtility/JUTTexture.cpp - src/JSystem/JUtility/JUTPalette.cpp - src/JSystem/JUtility/JUTNameTab.cpp - src/JSystem/JUtility/JUTGraphFifo.cpp - src/JSystem/JUtility/JUTFont.cpp - src/JSystem/JUtility/JUTResFont.cpp - src/JSystem/JUtility/JUTDbPrint.cpp - src/JSystem/JUtility/JUTGamePad.cpp - src/JSystem/JUtility/JUTException.cpp - src/JSystem/JUtility/JUTDirectPrint.cpp - src/JSystem/JUtility/JUTAssert.cpp - src/JSystem/JUtility/JUTVideo.cpp - src/JSystem/JUtility/JUTXfb.cpp - src/JSystem/JUtility/JUTFader.cpp - src/JSystem/JUtility/JUTProcBar.cpp - src/JSystem/JUtility/JUTConsole.cpp - src/JSystem/JUtility/JUTDirectFile.cpp - src/JSystem/JUtility/JUTFontData_Ascfont_fix12.cpp - src/JSystem/J2DGraph/J2DGrafContext.cpp - src/JSystem/J2DGraph/J2DOrthoGraph.cpp - src/JSystem/J2DGraph/J2DTevs.cpp - src/JSystem/J2DGraph/J2DMaterial.cpp - src/JSystem/J2DGraph/J2DMatBlock.cpp - src/JSystem/J2DGraph/J2DMaterialFactory.cpp - src/JSystem/J2DGraph/J2DPrint.cpp - src/JSystem/J2DGraph/J2DPane.cpp - src/JSystem/J2DGraph/J2DScreen.cpp - src/JSystem/J2DGraph/J2DWindow.cpp - src/JSystem/J2DGraph/J2DPicture.cpp - src/JSystem/J2DGraph/J2DTextBox.cpp - src/JSystem/J2DGraph/J2DWindowEx.cpp - src/JSystem/J2DGraph/J2DPictureEx.cpp - src/JSystem/J2DGraph/J2DTextBoxEx.cpp - src/JSystem/J2DGraph/J2DAnmLoader.cpp - src/JSystem/J2DGraph/J2DAnimation.cpp - src/JSystem/J2DGraph/J2DManage.cpp - src/JSystem/J3DGraphBase/J3DGD.cpp - src/JSystem/J3DGraphBase/J3DSys.cpp - src/JSystem/J3DGraphBase/J3DVertex.cpp - src/JSystem/J3DGraphBase/J3DTransform.cpp - src/JSystem/J3DGraphBase/J3DTexture.cpp - src/JSystem/J3DGraphBase/J3DPacket.cpp - src/JSystem/J3DGraphBase/J3DShapeMtx.cpp - src/JSystem/J3DGraphBase/J3DShapeDraw.cpp - src/JSystem/J3DGraphBase/J3DShape.cpp - src/JSystem/J3DGraphBase/J3DMaterial.cpp - src/JSystem/J3DGraphBase/J3DMatBlock.cpp - src/JSystem/J3DGraphBase/J3DTevs.cpp - src/JSystem/J3DGraphBase/J3DDrawBuffer.cpp - src/JSystem/J3DGraphBase/J3DStruct.cpp - src/JSystem/J3DGraphAnimator/J3DShapeTable.cpp - src/JSystem/J3DGraphAnimator/J3DJointTree.cpp - src/JSystem/J3DGraphAnimator/J3DModelData.cpp - src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp - src/JSystem/J3DGraphAnimator/J3DModel.cpp - src/JSystem/J3DGraphAnimator/J3DAnimation.cpp - src/JSystem/J3DGraphAnimator/J3DMaterialAnm.cpp - src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp - src/JSystem/J3DGraphAnimator/J3DCluster.cpp - src/JSystem/J3DGraphAnimator/J3DJoint.cpp - src/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp - src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp - src/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp - src/JSystem/J3DGraphLoader/J3DClusterLoader.cpp - src/JSystem/J3DGraphLoader/J3DModelLoader.cpp - src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp - src/JSystem/J3DGraphLoader/J3DJointFactory.cpp - src/JSystem/J3DGraphLoader/J3DShapeFactory.cpp - src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp - src/JSystem/JMath/JMath.cpp - src/JSystem/JMath/random.cpp - src/JSystem/JMath/JMATrigonometric.cpp - src/JSystem/JHostIO/JORHostInfo.cpp - src/JSystem/JHostIO/JORServer.cpp - src/JSystem/JHostIO/JHIhioASync.cpp - src/JSystem/JHostIO/JHIRMcc.cpp - src/JSystem/JHostIO/JHIMccBuf.cpp - ) - -set(REL_FILES - src/f_pc/f_pc_profile_lst.cpp - src/d/actor/d_a_andsw.cpp - src/d/actor/d_a_bg.cpp - src/d/actor/d_a_bg_obj.cpp - src/d/actor/d_a_dmidna.cpp - src/d/actor/d_a_door_dbdoor00.cpp - src/d/actor/d_a_door_knob00.cpp - src/d/actor/d_a_door_shutter.cpp - src/d/actor/d_a_door_spiral.cpp - src/d/actor/d_a_dshutter.cpp - src/d/actor/d_a_ep.cpp - src/d/actor/d_a_hitobj.cpp - src/d/actor/d_a_kytag00.cpp - src/d/actor/d_a_kytag04.cpp - src/d/actor/d_a_kytag17.cpp - src/d/actor/d_a_obj_brakeeff.cpp - src/d/actor/d_a_obj_burnbox.cpp - src/d/actor/d_a_obj_carry.cpp - src/d/actor/d_a_obj_ito.cpp - src/d/actor/d_a_obj_movebox.cpp - src/d/actor/d_a_obj_swpush.cpp - src/d/actor/d_a_obj_timer.cpp - src/d/actor/d_a_path_line.cpp - src/d/actor/d_a_scene_exit.cpp - src/d/actor/d_a_set_bgobj.cpp - src/d/actor/d_a_swhit0.cpp - src/d/actor/d_a_tag_allmato.cpp - src/d/actor/d_a_tag_camera.cpp - src/d/actor/d_a_tag_chkpoint.cpp - src/d/actor/d_a_tag_event.cpp - src/d/actor/d_a_tag_evt.cpp - src/d/actor/d_a_tag_evtarea.cpp - src/d/actor/d_a_tag_evtmsg.cpp - src/d/actor/d_a_tag_howl.cpp - src/d/actor/d_a_tag_kmsg.cpp - src/d/actor/d_a_tag_lantern.cpp - src/d/actor/d_a_tag_mist.cpp - src/d/actor/d_a_tag_msg.cpp - src/d/actor/d_a_tag_push.cpp - src/d/actor/d_a_tag_telop.cpp - src/d/actor/d_a_tbox.cpp - src/d/actor/d_a_tbox2.cpp - src/d/actor/d_a_vrbox.cpp - src/d/actor/d_a_vrbox2.cpp - src/d/actor/d_a_arrow.cpp - src/d/actor/d_a_boomerang.cpp - src/d/actor/d_a_crod.cpp - src/d/actor/d_a_demo00.cpp - src/d/actor/d_a_disappear.cpp - src/d/actor/d_a_mg_rod.cpp - src/d/actor/d_a_midna.cpp - src/d/actor/d_a_nbomb.cpp - src/d/actor/d_a_obj_life_container.cpp - src/d/actor/d_a_obj_yousei.cpp - src/d/actor/d_a_spinner.cpp - src/d/actor/d_a_suspend.cpp - src/d/actor/d_a_tag_attention.cpp - src/d/actor/d_a_alldie.cpp - src/d/actor/d_a_andsw2.cpp - src/d/actor/d_a_bd.cpp - src/d/actor/d_a_canoe.cpp - src/d/actor/d_a_cstaF.cpp - src/d/actor/d_a_demo_item.cpp - src/d/actor/d_a_door_bossL1.cpp - src/d/actor/d_a_e_dn.cpp - src/d/actor/d_a_e_fm.cpp - src/d/actor/d_a_e_ga.cpp - src/d/actor/d_a_e_hb.cpp - src/d/actor/d_a_e_nest.cpp - src/d/actor/d_a_e_rd.cpp - src/d/actor/d_a_econt.cpp - src/d/actor/d_a_fr.cpp - src/d/actor/d_a_grass.cpp - src/d/actor/d_a_kytag05.cpp - src/d/actor/d_a_kytag10.cpp - src/d/actor/d_a_kytag11.cpp - src/d/actor/d_a_kytag14.cpp - src/d/actor/d_a_mg_fish.cpp - src/d/actor/d_a_npc_besu.cpp - src/d/actor/d_a_npc_fairy_seirei.cpp - src/d/actor/d_a_npc_fish.cpp - src/d/actor/d_a_npc_henna.cpp - src/d/actor/d_a_npc_kakashi.cpp - src/d/actor/d_a_npc_kkri.cpp - src/d/actor/d_a_npc_kolin.cpp - src/d/actor/d_a_npc_maro.cpp - src/d/actor/d_a_npc_taro.cpp - src/d/actor/d_a_npc_tkj.cpp - src/d/actor/d_a_obj_bhashi.cpp - src/d/actor/d_a_obj_bkdoor.cpp - src/d/actor/d_a_obj_bosswarp.cpp - src/d/actor/d_a_obj_cboard.cpp - src/d/actor/d_a_obj_digplace.cpp - src/d/actor/d_a_obj_eff.cpp - src/d/actor/d_a_obj_fmobj.cpp - src/d/actor/d_a_obj_gpTaru.cpp - src/d/actor/d_a_obj_hhashi.cpp - src/d/actor/d_a_obj_kanban2.cpp - src/d/actor/d_a_obj_kbacket.cpp - src/d/actor/d_a_obj_kgate.cpp - src/d/actor/d_a_obj_klift00.cpp - src/d/actor/d_a_obj_ktOnFire.cpp - src/d/actor/d_a_obj_ladder.cpp - src/d/actor/d_a_obj_lv2Candle.cpp - src/d/actor/d_a_obj_magne_arm.cpp - src/d/actor/d_a_obj_metalbox.cpp - src/d/actor/d_a_obj_mgate.cpp - src/d/actor/d_a_obj_nameplate.cpp - src/d/actor/d_a_obj_ornament_cloth.cpp - src/d/actor/d_a_obj_rope_bridge.cpp - src/d/actor/d_a_obj_sWallShutter.cpp - src/d/actor/d_a_obj_stick.cpp - src/d/actor/d_a_obj_stoneMark.cpp - src/d/actor/d_a_obj_swpropeller.cpp - src/d/actor/d_a_obj_swpush5.cpp - src/d/actor/d_a_obj_yobikusa.cpp - src/d/actor/d_a_scene_exit2.cpp - src/d/actor/d_a_shop_item.cpp - src/d/actor/d_a_sq.cpp - src/d/actor/d_a_swc00.cpp - src/d/actor/d_a_tag_CstaSw.cpp - src/d/actor/d_a_tag_ajnot.cpp - src/d/actor/d_a_tag_attack_item.cpp - src/d/actor/d_a_tag_gstart.cpp - src/d/actor/d_a_tag_hinit.cpp - src/d/actor/d_a_tag_hjump.cpp - src/d/actor/d_a_tag_hstop.cpp - src/d/actor/d_a_tag_lv2prchk.cpp - src/d/actor/d_a_tag_magne.cpp - src/d/actor/d_a_tag_mhint.cpp - src/d/actor/d_a_tag_mstop.cpp - src/d/actor/d_a_tag_spring.cpp - src/d/actor/d_a_tag_statue_evt.cpp - src/d/actor/d_a_ykgr.cpp - src/d/actor/d_a_L7demo_dr.cpp - src/d/actor/d_a_L7low_dr.cpp - src/d/actor/d_a_L7op_demo_dr.cpp - src/d/actor/d_a_b_bh.cpp - src/d/actor/d_a_b_bq.cpp - src/d/actor/d_a_b_dr.cpp - src/d/actor/d_a_b_dre.cpp - src/d/actor/d_a_b_ds.cpp - src/d/actor/d_a_b_gg.cpp - src/d/actor/d_a_b_gm.cpp - src/d/actor/d_a_b_gnd.cpp - src/d/actor/d_a_b_go.cpp - src/d/actor/d_a_b_gos.cpp - src/d/actor/d_a_b_mgn.cpp - src/d/actor/d_a_b_ob.cpp - src/d/actor/d_a_b_oh.cpp - src/d/actor/d_a_b_oh2.cpp - src/d/actor/d_a_b_tn.cpp - src/d/actor/d_a_b_yo.cpp - src/d/actor/d_a_b_yo_ice.cpp - src/d/actor/d_a_b_zant.cpp - src/d/actor/d_a_b_zant_magic.cpp - src/d/actor/d_a_b_zant_mobile.cpp - src/d/actor/d_a_b_zant_sima.cpp - src/d/actor/d_a_balloon_2D.cpp - src/d/actor/d_a_bullet.cpp - src/d/actor/d_a_coach_2D.cpp - src/d/actor/d_a_coach_fire.cpp - src/d/actor/d_a_cow.cpp - src/d/actor/d_a_cstatue.cpp - src/d/actor/d_a_do.cpp - src/d/actor/d_a_door_boss.cpp - src/d/actor/d_a_door_bossL5.cpp - src/d/actor/d_a_door_mbossL1.cpp - src/d/actor/d_a_door_push.cpp - src/d/actor/d_a_e_ai.cpp - src/d/actor/d_a_e_arrow.cpp - src/d/actor/d_a_e_ba.cpp - src/d/actor/d_a_e_bee.cpp - src/d/actor/d_a_e_bg.cpp - src/d/actor/d_a_e_bi.cpp - src/d/actor/d_a_e_bi_leaf.cpp - src/d/actor/d_a_e_bs.cpp - src/d/actor/d_a_e_bu.cpp - src/d/actor/d_a_e_bug.cpp - src/d/actor/d_a_e_cr.cpp - src/d/actor/d_a_e_cr_egg.cpp - src/d/actor/d_a_e_db.cpp - src/d/actor/d_a_e_db_leaf.cpp - src/d/actor/d_a_e_dd.cpp - src/d/actor/d_a_e_df.cpp - src/d/actor/d_a_e_dk.cpp - src/d/actor/d_a_e_dt.cpp - src/d/actor/d_a_e_fb.cpp - src/d/actor/d_a_e_fk.cpp - src/d/actor/d_a_e_fs.cpp - src/d/actor/d_a_e_fz.cpp - src/d/actor/d_a_e_gb.cpp - src/d/actor/d_a_e_ge.cpp - src/d/actor/d_a_e_gi.cpp - src/d/actor/d_a_e_gm.cpp - src/d/actor/d_a_e_gob.cpp - src/d/actor/d_a_e_gs.cpp - src/d/actor/d_a_e_hb_leaf.cpp - src/d/actor/d_a_e_hm.cpp - src/d/actor/d_a_e_hp.cpp - src/d/actor/d_a_e_hz.cpp - src/d/actor/d_a_e_hzelda.cpp - src/d/actor/d_a_e_is.cpp - src/d/actor/d_a_e_kg.cpp - src/d/actor/d_a_e_kk.cpp - src/d/actor/d_a_e_kr.cpp - src/d/actor/d_a_e_mb.cpp - src/d/actor/d_a_e_md.cpp - src/d/actor/d_a_e_mf.cpp - src/d/actor/d_a_e_mk.cpp - src/d/actor/d_a_e_mk_bo.cpp - src/d/actor/d_a_e_mm.cpp - src/d/actor/d_a_e_mm_mt.cpp - src/d/actor/d_a_e_ms.cpp - src/d/actor/d_a_e_nz.cpp - src/d/actor/d_a_e_oc.cpp - src/d/actor/d_a_e_oct_bg.cpp - src/d/actor/d_a_e_ot.cpp - src/d/actor/d_a_e_ph.cpp - src/d/actor/d_a_e_pm.cpp - src/d/actor/d_a_e_po.cpp - src/d/actor/d_a_e_pz.cpp - src/d/actor/d_a_e_rb.cpp - src/d/actor/d_a_e_rdb.cpp - src/d/actor/d_a_e_rdy.cpp - src/d/actor/d_a_e_s1.cpp - src/d/actor/d_a_e_sb.cpp - src/d/actor/d_a_e_sf.cpp - src/d/actor/d_a_e_sg.cpp - src/d/actor/d_a_e_sh.cpp - src/d/actor/d_a_e_sm.cpp - src/d/actor/d_a_e_sm2.cpp - src/d/actor/d_a_e_st.cpp - src/d/actor/d_a_e_st_line.cpp - src/d/actor/d_a_e_sw.cpp - src/d/actor/d_a_e_th.cpp - src/d/actor/d_a_e_th_ball.cpp - src/d/actor/d_a_e_tk.cpp - src/d/actor/d_a_e_tk2.cpp - src/d/actor/d_a_e_tk_ball.cpp - src/d/actor/d_a_e_tt.cpp - src/d/actor/d_a_e_vt.cpp - src/d/actor/d_a_e_warpappear.cpp - src/d/actor/d_a_e_wb.cpp - src/d/actor/d_a_e_ws.cpp - src/d/actor/d_a_e_ww.cpp - src/d/actor/d_a_e_yc.cpp - src/d/actor/d_a_e_yd.cpp - src/d/actor/d_a_e_yd_leaf.cpp - src/d/actor/d_a_e_yg.cpp - src/d/actor/d_a_e_yh.cpp - src/d/actor/d_a_e_yk.cpp - src/d/actor/d_a_e_ym.cpp - src/d/actor/d_a_e_ym_tag.cpp - src/d/actor/d_a_e_ymb.cpp - src/d/actor/d_a_e_yr.cpp - src/d/actor/d_a_e_zh.cpp - src/d/actor/d_a_e_zm.cpp - src/d/actor/d_a_e_zs.cpp - src/d/actor/d_a_formation_mng.cpp - src/d/actor/d_a_guard_mng.cpp - src/d/actor/d_a_horse.cpp - src/d/actor/d_a_hozelda.cpp - src/d/actor/d_a_izumi_gate.cpp - src/d/actor/d_a_kago.cpp - src/d/actor/d_a_kytag01.cpp - src/d/actor/d_a_kytag02.cpp - src/d/actor/d_a_kytag03.cpp - src/d/actor/d_a_kytag06.cpp - src/d/actor/d_a_kytag07.cpp - src/d/actor/d_a_kytag08.cpp - src/d/actor/d_a_kytag09.cpp - src/d/actor/d_a_kytag12.cpp - src/d/actor/d_a_kytag13.cpp - src/d/actor/d_a_kytag15.cpp - src/d/actor/d_a_kytag16.cpp - src/d/actor/d_a_mant.cpp - src/d/actor/d_a_mg_fshop.cpp - src/d/actor/d_a_mirror.cpp - src/d/actor/d_a_movie_player.cpp - src/d/actor/d_a_myna.cpp - src/d/actor/d_a_ni.cpp - src/d/actor/d_a_npc_aru.cpp - src/d/actor/d_a_npc_ash.cpp - src/d/actor/d_a_npc_ashB.cpp - src/d/actor/d_a_npc_bans.cpp - src/d/actor/d_a_npc_blue_ns.cpp - src/d/actor/d_a_npc_bou.cpp - src/d/actor/d_a_npc_bouS.cpp - src/d/actor/d_a_npc_cdn3.cpp - src/d/actor/d_a_npc_chat.cpp - src/d/actor/d_a_npc_chin.cpp - src/d/actor/d_a_npc_clerka.cpp - src/d/actor/d_a_npc_clerkb.cpp - src/d/actor/d_a_npc_clerkt.cpp - src/d/actor/d_a_npc_coach.cpp - src/d/actor/d_a_npc_df.cpp - src/d/actor/d_a_npc_doc.cpp - src/d/actor/d_a_npc_doorboy.cpp - src/d/actor/d_a_npc_drainSol.cpp - src/d/actor/d_a_npc_du.cpp - src/d/actor/d_a_npc_fairy.cpp - src/d/actor/d_a_npc_fguard.cpp - src/d/actor/d_a_npc_gnd.cpp - src/d/actor/d_a_npc_gra.cpp - src/d/actor/d_a_npc_grc.cpp - src/d/actor/d_a_npc_grd.cpp - src/d/actor/d_a_npc_grm.cpp - src/d/actor/d_a_npc_grmc.cpp - src/d/actor/d_a_npc_gro.cpp - src/d/actor/d_a_npc_grr.cpp - src/d/actor/d_a_npc_grs.cpp - src/d/actor/d_a_npc_grz.cpp - src/d/actor/d_a_npc_guard.cpp - src/d/actor/d_a_npc_gwolf.cpp - src/d/actor/d_a_npc_hanjo.cpp - src/d/actor/d_a_npc_henna0.cpp - src/d/actor/d_a_npc_hoz.cpp - src/d/actor/d_a_npc_impal.cpp - src/d/actor/d_a_npc_inko.cpp - src/d/actor/d_a_npc_ins.cpp - src/d/actor/d_a_npc_jagar.cpp - src/d/actor/d_a_npc_kasi_hana.cpp - src/d/actor/d_a_npc_kasi_kyu.cpp - src/d/actor/d_a_npc_kasi_mich.cpp - src/d/actor/d_a_npc_kdk.cpp - src/d/actor/d_a_npc_kn.cpp - src/d/actor/d_a_npc_knj.cpp - src/d/actor/d_a_npc_kolinb.cpp - src/d/actor/d_a_npc_ks.cpp - src/d/actor/d_a_npc_kyury.cpp - src/d/actor/d_a_npc_len.cpp - src/d/actor/d_a_npc_lf.cpp - src/d/actor/d_a_npc_lud.cpp - src/d/actor/d_a_npc_midp.cpp - src/d/actor/d_a_npc_mk.cpp - src/d/actor/d_a_npc_moi.cpp - src/d/actor/d_a_npc_moir.cpp - src/d/actor/d_a_npc_myna2.cpp - src/d/actor/d_a_npc_ne.cpp - src/d/actor/d_a_npc_p2.cpp - src/d/actor/d_a_npc_pachi_besu.cpp - src/d/actor/d_a_npc_pachi_maro.cpp - src/d/actor/d_a_npc_pachi_taro.cpp - src/d/actor/d_a_npc_passer.cpp - src/d/actor/d_a_npc_passer2.cpp - src/d/actor/d_a_npc_post.cpp - src/d/actor/d_a_npc_pouya.cpp - src/d/actor/d_a_npc_prayer.cpp - src/d/actor/d_a_npc_raca.cpp - src/d/actor/d_a_npc_rafrel.cpp - src/d/actor/d_a_npc_saru.cpp - src/d/actor/d_a_npc_seib.cpp - src/d/actor/d_a_npc_seic.cpp - src/d/actor/d_a_npc_seid.cpp - src/d/actor/d_a_npc_seira.cpp - src/d/actor/d_a_npc_seira2.cpp - src/d/actor/d_a_npc_seirei.cpp - src/d/actor/d_a_npc_shad.cpp - src/d/actor/d_a_npc_shaman.cpp - src/d/actor/d_a_npc_shoe.cpp - src/d/actor/d_a_npc_shop0.cpp - src/d/actor/d_a_npc_shop_maro.cpp - src/d/actor/d_a_npc_sola.cpp - src/d/actor/d_a_npc_soldierA.cpp - src/d/actor/d_a_npc_soldierB.cpp - src/d/actor/d_a_npc_sq.cpp - src/d/actor/d_a_npc_the.cpp - src/d/actor/d_a_npc_theB.cpp - src/d/actor/d_a_npc_tk.cpp - src/d/actor/d_a_npc_tkc.cpp - src/d/actor/d_a_npc_tkj2.cpp - src/d/actor/d_a_npc_tks.cpp - src/d/actor/d_a_npc_toby.cpp - src/d/actor/d_a_npc_tr.cpp - src/d/actor/d_a_npc_uri.cpp - src/d/actor/d_a_npc_worm.cpp - src/d/actor/d_a_npc_wrestler.cpp - src/d/actor/d_a_npc_yamid.cpp - src/d/actor/d_a_npc_yamis.cpp - src/d/actor/d_a_npc_yamit.cpp - src/d/actor/d_a_npc_yelia.cpp - src/d/actor/d_a_npc_ykm.cpp - src/d/actor/d_a_npc_ykw.cpp - src/d/actor/d_a_npc_zanb.cpp - src/d/actor/d_a_npc_zant.cpp - src/d/actor/d_a_npc_zelR.cpp - src/d/actor/d_a_npc_zelRo.cpp - src/d/actor/d_a_npc_zelda.cpp - src/d/actor/d_a_npc_zra.cpp - src/d/actor/d_a_npc_zrc.cpp - src/d/actor/d_a_npc_zrz.cpp - src/d/actor/d_a_obj_Lv5Key.cpp - src/d/actor/d_a_obj_Turara.cpp - src/d/actor/d_a_obj_TvCdlst.cpp - src/d/actor/d_a_obj_Y_taihou.cpp - src/d/actor/d_a_obj_amiShutter.cpp - src/d/actor/d_a_obj_ari.cpp - src/d/actor/d_a_obj_automata.cpp - src/d/actor/d_a_obj_avalanche.cpp - src/d/actor/d_a_obj_balloon.cpp - src/d/actor/d_a_obj_barDesk.cpp - src/d/actor/d_a_obj_batta.cpp - src/d/actor/d_a_obj_bbox.cpp - src/d/actor/d_a_obj_bed.cpp - src/d/actor/d_a_obj_bemos.cpp - src/d/actor/d_a_obj_bhbridge.cpp - src/d/actor/d_a_obj_bk_leaf.cpp - src/d/actor/d_a_obj_bky_rock.cpp - src/d/actor/d_a_obj_bmWindow.cpp - src/d/actor/d_a_obj_bmshutter.cpp - src/d/actor/d_a_obj_bombf.cpp - src/d/actor/d_a_obj_boumato.cpp - src/d/actor/d_a_obj_brg.cpp - src/d/actor/d_a_obj_bsGate.cpp - src/d/actor/d_a_obj_bubblePilar.cpp - src/d/actor/d_a_obj_catdoor.cpp - src/d/actor/d_a_obj_cb.cpp - src/d/actor/d_a_obj_cblock.cpp - src/d/actor/d_a_obj_cdoor.cpp - src/d/actor/d_a_obj_chandelier.cpp - src/d/actor/d_a_obj_chest.cpp - src/d/actor/d_a_obj_cho.cpp - src/d/actor/d_a_obj_cowdoor.cpp - src/d/actor/d_a_obj_crope.cpp - src/d/actor/d_a_obj_crvfence.cpp - src/d/actor/d_a_obj_crvgate.cpp - src/d/actor/d_a_obj_crvhahen.cpp - src/d/actor/d_a_obj_crvlh_down.cpp - src/d/actor/d_a_obj_crvlh_up.cpp - src/d/actor/d_a_obj_crvsteel.cpp - src/d/actor/d_a_obj_crystal.cpp - src/d/actor/d_a_obj_cwall.cpp - src/d/actor/d_a_obj_damCps.cpp - src/d/actor/d_a_obj_dan.cpp - src/d/actor/d_a_obj_digholl.cpp - src/d/actor/d_a_obj_digsnow.cpp - src/d/actor/d_a_obj_dmelevator.cpp - src/d/actor/d_a_obj_drop.cpp - src/d/actor/d_a_obj_dust.cpp - src/d/actor/d_a_obj_enemy_create.cpp - src/d/actor/d_a_obj_fallobj.cpp - src/d/actor/d_a_obj_fan.cpp - src/d/actor/d_a_obj_fchain.cpp - src/d/actor/d_a_obj_fireWood.cpp - src/d/actor/d_a_obj_fireWood2.cpp - src/d/actor/d_a_obj_firepillar.cpp - src/d/actor/d_a_obj_firepillar2.cpp - src/d/actor/d_a_obj_flag.cpp - src/d/actor/d_a_obj_flag2.cpp - src/d/actor/d_a_obj_flag3.cpp - src/d/actor/d_a_obj_food.cpp - src/d/actor/d_a_obj_fw.cpp - src/d/actor/d_a_obj_gadget.cpp - src/d/actor/d_a_obj_ganonwall.cpp - src/d/actor/d_a_obj_ganonwall2.cpp - src/d/actor/d_a_obj_gb.cpp - src/d/actor/d_a_obj_geyser.cpp - src/d/actor/d_a_obj_glowSphere.cpp - src/d/actor/d_a_obj_gm.cpp - src/d/actor/d_a_obj_goGate.cpp - src/d/actor/d_a_obj_gomikabe.cpp - src/d/actor/d_a_obj_gra2.cpp - src/d/actor/d_a_obj_graWall.cpp - src/d/actor/d_a_obj_gra_rock.cpp - src/d/actor/d_a_obj_grave_stone.cpp - src/d/actor/d_a_obj_groundwater.cpp - src/d/actor/d_a_obj_grz_rock.cpp - src/d/actor/d_a_obj_h_saku.cpp - src/d/actor/d_a_obj_hakai_brl.cpp - src/d/actor/d_a_obj_hakai_ftr.cpp - src/d/actor/d_a_obj_hasu2.cpp - src/d/actor/d_a_obj_hata.cpp - src/d/actor/d_a_obj_hb.cpp - src/d/actor/d_a_obj_hbombkoya.cpp - src/d/actor/d_a_obj_heavySw.cpp - src/d/actor/d_a_obj_hfuta.cpp - src/d/actor/d_a_obj_hsTarget.cpp - src/d/actor/d_a_obj_ice_l.cpp - src/d/actor/d_a_obj_ice_s.cpp - src/d/actor/d_a_obj_iceblock.cpp - src/d/actor/d_a_obj_iceleaf.cpp - src/d/actor/d_a_obj_ihasi.cpp - src/d/actor/d_a_obj_ikada.cpp - src/d/actor/d_a_obj_inobone.cpp - src/d/actor/d_a_obj_ita.cpp - src/d/actor/d_a_obj_itamato.cpp - src/d/actor/d_a_obj_kabuto.cpp - src/d/actor/d_a_obj_kag.cpp - src/d/actor/d_a_obj_kage.cpp - src/d/actor/d_a_obj_kago.cpp - src/d/actor/d_a_obj_kaisou.cpp - src/d/actor/d_a_obj_kamakiri.cpp - src/d/actor/d_a_obj_kantera.cpp - src/d/actor/d_a_obj_katatsumuri.cpp - src/d/actor/d_a_obj_kazeneko.cpp - src/d/actor/d_a_obj_kbox.cpp - src/d/actor/d_a_obj_key.cpp - src/d/actor/d_a_obj_keyhole.cpp - src/d/actor/d_a_obj_ki.cpp - src/d/actor/d_a_obj_kiPot.cpp - src/d/actor/d_a_obj_kita.cpp - src/d/actor/d_a_obj_kjgjs.cpp - src/d/actor/d_a_obj_kkanban.cpp - src/d/actor/d_a_obj_knBullet.cpp - src/d/actor/d_a_obj_kshutter.cpp - src/d/actor/d_a_obj_kuwagata.cpp - src/d/actor/d_a_obj_kwheel00.cpp - src/d/actor/d_a_obj_kwheel01.cpp - src/d/actor/d_a_obj_kznkarm.cpp - src/d/actor/d_a_obj_laundry.cpp - src/d/actor/d_a_obj_laundry_rope.cpp - src/d/actor/d_a_obj_lbox.cpp - src/d/actor/d_a_obj_lp.cpp - src/d/actor/d_a_obj_lv1Candle00.cpp - src/d/actor/d_a_obj_lv1Candle01.cpp - src/d/actor/d_a_obj_lv3Candle.cpp - src/d/actor/d_a_obj_lv3Water.cpp - src/d/actor/d_a_obj_lv3Water2.cpp - src/d/actor/d_a_obj_lv3WaterB.cpp - src/d/actor/d_a_obj_lv3saka00.cpp - src/d/actor/d_a_obj_lv3waterEff.cpp - src/d/actor/d_a_obj_lv4CandleDemoTag.cpp - src/d/actor/d_a_obj_lv4CandleTag.cpp - src/d/actor/d_a_obj_lv4EdShutter.cpp - src/d/actor/d_a_obj_lv4Gate.cpp - src/d/actor/d_a_obj_lv4HsTarget.cpp - src/d/actor/d_a_obj_lv4PoGate.cpp - src/d/actor/d_a_obj_lv4RailWall.cpp - src/d/actor/d_a_obj_lv4SlideWall.cpp - src/d/actor/d_a_obj_lv4bridge.cpp - src/d/actor/d_a_obj_lv4chandelier.cpp - src/d/actor/d_a_obj_lv4digsand.cpp - src/d/actor/d_a_obj_lv4floor.cpp - src/d/actor/d_a_obj_lv4gear.cpp - src/d/actor/d_a_obj_lv4prelvtr.cpp - src/d/actor/d_a_obj_lv4prwall.cpp - src/d/actor/d_a_obj_lv4sand.cpp - src/d/actor/d_a_obj_lv5FloorBoard.cpp - src/d/actor/d_a_obj_lv5IceWall.cpp - src/d/actor/d_a_obj_lv5SwIce.cpp - src/d/actor/d_a_obj_lv5ychndlr.cpp - src/d/actor/d_a_obj_lv5yiblltray.cpp - src/d/actor/d_a_obj_lv6ChangeGate.cpp - src/d/actor/d_a_obj_lv6FurikoTrap.cpp - src/d/actor/d_a_obj_lv6Lblock.cpp - src/d/actor/d_a_obj_lv6SwGate.cpp - src/d/actor/d_a_obj_lv6SzGate.cpp - src/d/actor/d_a_obj_lv6Tenbin.cpp - src/d/actor/d_a_obj_lv6TogeRoll.cpp - src/d/actor/d_a_obj_lv6TogeTrap.cpp - src/d/actor/d_a_obj_lv6bemos.cpp - src/d/actor/d_a_obj_lv6bemos2.cpp - src/d/actor/d_a_obj_lv6egate.cpp - src/d/actor/d_a_obj_lv6elevta.cpp - src/d/actor/d_a_obj_lv6swturn.cpp - src/d/actor/d_a_obj_lv7BsGate.cpp - src/d/actor/d_a_obj_lv7PropellerY.cpp - src/d/actor/d_a_obj_lv7bridge.cpp - src/d/actor/d_a_obj_lv8KekkaiTrap.cpp - src/d/actor/d_a_obj_lv8Lift.cpp - src/d/actor/d_a_obj_lv8OptiLift.cpp - src/d/actor/d_a_obj_lv8UdFloor.cpp - src/d/actor/d_a_obj_lv9SwShutter.cpp - src/d/actor/d_a_obj_magLift.cpp - src/d/actor/d_a_obj_magLiftRot.cpp - src/d/actor/d_a_obj_maki.cpp - src/d/actor/d_a_obj_master_sword.cpp - src/d/actor/d_a_obj_mato.cpp - src/d/actor/d_a_obj_mhole.cpp - src/d/actor/d_a_obj_mie.cpp - src/d/actor/d_a_obj_mirror_6pole.cpp - src/d/actor/d_a_obj_mirror_chain.cpp - src/d/actor/d_a_obj_mirror_sand.cpp - src/d/actor/d_a_obj_mirror_screw.cpp - src/d/actor/d_a_obj_mirror_table.cpp - src/d/actor/d_a_obj_msima.cpp - src/d/actor/d_a_obj_mvstair.cpp - src/d/actor/d_a_obj_myogan.cpp - src/d/actor/d_a_obj_nagaisu.cpp - src/d/actor/d_a_obj_nan.cpp - src/d/actor/d_a_obj_ndoor.cpp - src/d/actor/d_a_obj_nougu.cpp - src/d/actor/d_a_obj_octhashi.cpp - src/d/actor/d_a_obj_oiltubo.cpp - src/d/actor/d_a_obj_onsen.cpp - src/d/actor/d_a_obj_onsenFire.cpp - src/d/actor/d_a_obj_onsenTaru.cpp - src/d/actor/d_a_obj_pdoor.cpp - src/d/actor/d_a_obj_pdtile.cpp - src/d/actor/d_a_obj_pdwall.cpp - src/d/actor/d_a_obj_picture.cpp - src/d/actor/d_a_obj_pillar.cpp - src/d/actor/d_a_obj_pleaf.cpp - src/d/actor/d_a_obj_poCandle.cpp - src/d/actor/d_a_obj_poFire.cpp - src/d/actor/d_a_obj_poTbox.cpp - src/d/actor/d_a_obj_prop.cpp - src/d/actor/d_a_obj_pumpkin.cpp - src/d/actor/d_a_obj_rcircle.cpp - src/d/actor/d_a_obj_rfHole.cpp - src/d/actor/d_a_obj_rgate.cpp - src/d/actor/d_a_obj_riverrock.cpp - src/d/actor/d_a_obj_rock.cpp - src/d/actor/d_a_obj_rotBridge.cpp - src/d/actor/d_a_obj_rotTrap.cpp - src/d/actor/d_a_obj_roten.cpp - src/d/actor/d_a_obj_rstair.cpp - src/d/actor/d_a_obj_rw.cpp - src/d/actor/d_a_obj_saidan.cpp - src/d/actor/d_a_obj_sakuita.cpp - src/d/actor/d_a_obj_sakuita_rope.cpp - src/d/actor/d_a_obj_scannon.cpp - src/d/actor/d_a_obj_scannon_crs.cpp - src/d/actor/d_a_obj_scannon_ten.cpp - src/d/actor/d_a_obj_sekidoor.cpp - src/d/actor/d_a_obj_sekizo.cpp - src/d/actor/d_a_obj_sekizoa.cpp - src/d/actor/d_a_obj_shield.cpp - src/d/actor/d_a_obj_sm_door.cpp - src/d/actor/d_a_obj_smallkey.cpp - src/d/actor/d_a_obj_smgdoor.cpp - src/d/actor/d_a_obj_smoke.cpp - src/d/actor/d_a_obj_smtile.cpp - src/d/actor/d_a_obj_smw_stone.cpp - src/d/actor/d_a_obj_snowEffTag.cpp - src/d/actor/d_a_obj_snow_soup.cpp - src/d/actor/d_a_obj_so.cpp - src/d/actor/d_a_obj_spinLift.cpp - src/d/actor/d_a_obj_ss_drink.cpp - src/d/actor/d_a_obj_ss_item.cpp - src/d/actor/d_a_obj_stairBlock.cpp - src/d/actor/d_a_obj_stone.cpp - src/d/actor/d_a_obj_stopper.cpp - src/d/actor/d_a_obj_stopper2.cpp - src/d/actor/d_a_obj_suisya.cpp - src/d/actor/d_a_obj_sw.cpp - src/d/actor/d_a_obj_swBallA.cpp - src/d/actor/d_a_obj_swBallB.cpp - src/d/actor/d_a_obj_swBallC.cpp - src/d/actor/d_a_obj_swLight.cpp - src/d/actor/d_a_obj_swchain.cpp - src/d/actor/d_a_obj_swhang.cpp - src/d/actor/d_a_obj_sword.cpp - src/d/actor/d_a_obj_swpush2.cpp - src/d/actor/d_a_obj_swspinner.cpp - src/d/actor/d_a_obj_swturn.cpp - src/d/actor/d_a_obj_syRock.cpp - src/d/actor/d_a_obj_szbridge.cpp - src/d/actor/d_a_obj_taFence.cpp - src/d/actor/d_a_obj_table.cpp - src/d/actor/d_a_obj_takaraDai.cpp - src/d/actor/d_a_obj_tatigi.cpp - src/d/actor/d_a_obj_ten.cpp - src/d/actor/d_a_obj_testcube.cpp - src/d/actor/d_a_obj_tgake.cpp - src/d/actor/d_a_obj_thashi.cpp - src/d/actor/d_a_obj_thdoor.cpp - src/d/actor/d_a_obj_timeFire.cpp - src/d/actor/d_a_obj_tks.cpp - src/d/actor/d_a_obj_tmoon.cpp - src/d/actor/d_a_obj_toaru_maki.cpp - src/d/actor/d_a_obj_toby.cpp - src/d/actor/d_a_obj_tobyhouse.cpp - src/d/actor/d_a_obj_togeTrap.cpp - src/d/actor/d_a_obj_tombo.cpp - src/d/actor/d_a_obj_tornado.cpp - src/d/actor/d_a_obj_tornado2.cpp - src/d/actor/d_a_obj_tp.cpp - src/d/actor/d_a_obj_treesh.cpp - src/d/actor/d_a_obj_twGate.cpp - src/d/actor/d_a_obj_udoor.cpp - src/d/actor/d_a_obj_usaku.cpp - src/d/actor/d_a_obj_vground.cpp - src/d/actor/d_a_obj_volcball.cpp - src/d/actor/d_a_obj_volcbom.cpp - src/d/actor/d_a_obj_warp_kbrg.cpp - src/d/actor/d_a_obj_warp_obrg.cpp - src/d/actor/d_a_obj_waterGate.cpp - src/d/actor/d_a_obj_waterPillar.cpp - src/d/actor/d_a_obj_waterfall.cpp - src/d/actor/d_a_obj_wchain.cpp - src/d/actor/d_a_obj_wdStick.cpp - src/d/actor/d_a_obj_web0.cpp - src/d/actor/d_a_obj_web1.cpp - src/d/actor/d_a_obj_well_cover.cpp - src/d/actor/d_a_obj_wflag.cpp - src/d/actor/d_a_obj_wind_stone.cpp - src/d/actor/d_a_obj_window.cpp - src/d/actor/d_a_obj_wood_pendulum.cpp - src/d/actor/d_a_obj_wood_statue.cpp - src/d/actor/d_a_obj_wsword.cpp - src/d/actor/d_a_obj_yel_bag.cpp - src/d/actor/d_a_obj_ystone.cpp - src/d/actor/d_a_obj_zcloth.cpp - src/d/actor/d_a_obj_zdoor.cpp - src/d/actor/d_a_obj_zrTurara.cpp - src/d/actor/d_a_obj_zrTuraraRock.cpp - src/d/actor/d_a_obj_zraMark.cpp - src/d/actor/d_a_obj_zra_freeze.cpp - src/d/actor/d_a_obj_zra_rock.cpp - src/d/actor/d_a_passer_mng.cpp - src/d/actor/d_a_tag_arena.cpp - src/d/actor/d_a_peru.cpp - src/d/actor/d_a_ppolamp.cpp - src/d/actor/d_a_skip_2D.cpp - src/d/actor/d_a_startAndGoal.cpp - src/d/actor/d_a_swBall.cpp - src/d/actor/d_a_swLBall.cpp - src/d/actor/d_a_swTime.cpp - src/d/actor/d_a_tag_Lv6Gate.cpp - src/d/actor/d_a_tag_Lv7Gate.cpp - src/d/actor/d_a_tag_Lv8Gate.cpp - src/d/actor/d_a_tag_TWgate.cpp - src/d/actor/d_a_tag_lv6CstaSw.cpp - src/d/actor/d_a_tag_assistance.cpp - src/d/actor/d_a_tag_bottle_item.cpp - src/d/actor/d_a_tag_chgrestart.cpp - src/d/actor/d_a_tag_csw.cpp - src/d/actor/d_a_tag_escape.cpp - src/d/actor/d_a_tag_firewall.cpp - src/d/actor/d_a_tag_gra.cpp - src/d/actor/d_a_tag_guard.cpp - src/d/actor/d_a_tag_instruction.cpp - src/d/actor/d_a_tag_kago_fall.cpp - src/d/actor/d_a_tag_lightball.cpp - src/d/actor/d_a_tag_lv5soup.cpp - src/d/actor/d_a_tag_mmsg.cpp - src/d/actor/d_a_tag_mwait.cpp - src/d/actor/d_a_tag_myna2.cpp - src/d/actor/d_a_tag_myna_light.cpp - src/d/actor/d_a_tag_pachi.cpp - src/d/actor/d_a_tag_poFire.cpp - src/d/actor/d_a_tag_qs.cpp - src/d/actor/d_a_tag_ret_room.cpp - src/d/actor/d_a_tag_river_back.cpp - src/d/actor/d_a_tag_rmbit_sw.cpp - src/d/actor/d_a_tag_schedule.cpp - src/d/actor/d_a_tag_setBall.cpp - src/d/actor/d_a_tag_setrestart.cpp - src/d/actor/d_a_tag_shop_camera.cpp - src/d/actor/d_a_tag_shop_item.cpp - src/d/actor/d_a_tag_smk_emt.cpp - src/d/actor/d_a_tag_spinner.cpp - src/d/actor/d_a_tag_sppath.cpp - src/d/actor/d_a_tag_ss_drink.cpp - src/d/actor/d_a_tag_stream.cpp - src/d/actor/d_a_tag_theB_hint.cpp - src/d/actor/d_a_tag_wara_howl.cpp - src/d/actor/d_a_tag_watchge.cpp - src/d/actor/d_a_tag_waterfall.cpp - src/d/actor/d_a_tag_wljump.cpp - src/d/actor/d_a_tag_yami.cpp - src/d/actor/d_a_talk.cpp - src/d/actor/d_a_tboxSw.cpp - src/d/actor/d_a_title.cpp - src/d/actor/d_a_warp_bug.cpp - ) - -set(DUSK_FILES - src/dusk/imgui.cpp - src/dusk/stubs.cpp - src/dusk/extras.c - ) +include(files.cmake) source_group("dolzel" FILES ${DOLZEL_FILES} ${Z2AUDIOLIB_FILES} ${SSYSTEM_FILES} ${JSYSTEM_FILES} ${REL_FILES}) source_group("dusk" FILES ${DUSK_FILES}) +set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) add_library(game SHARED ${DOLZEL_FILES} ${Z2AUDIOLIB_FILES} ${SSYSTEM_FILES} ${JSYSTEM_FILES} ${REL_FILES} ${DUSK_FILES}) target_compile_definitions(game PRIVATE TARGET_PC VERSION=0 NDEBUG=1 NDEBUG_DEFINED=1 DEBUG_DEFINED=0) # TODO: version handling for res includes set(DUSK_TP_VERSION GZ2E01) target_include_directories(game PRIVATE include src assets/${DUSK_TP_VERSION} ${CMAKE_BINARY_DIR}/../${DUSK_TP_VERSION}/include) -target_link_libraries(game PRIVATE aurora::core aurora::gx aurora::si aurora::vi aurora::pad) +target_link_libraries(game PRIVATE aurora::core aurora::gx aurora::si aurora::vi aurora::pad aurora::mtx) add_executable(dusk src/dusk/main.cpp) target_compile_definitions(dusk PRIVATE TARGET_PC VERSION=0) diff --git a/extern/aurora b/extern/aurora index 223bcf39b8..08e965bbe8 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit 223bcf39b806f52021263d86ebe11eeffa7007f1 +Subproject commit 08e965bbe8aa3dc502a026efa14d749e6f6d2794 diff --git a/files.cmake b/files.cmake new file mode 100644 index 0000000000..b7cf5802da --- /dev/null +++ b/files.cmake @@ -0,0 +1,1330 @@ + +set(DOLZEL_FILES + src/m_Do/m_Do_main.cpp + src/m_Do/m_Do_printf.cpp + src/m_Do/m_Do_audio.cpp + src/m_Do/m_Do_controller_pad.cpp + #src/m_Do/m_Re_controller_pad.cpp + src/m_Do/m_Do_graphic.cpp + src/m_Do/m_Do_machine.cpp + src/m_Do/m_Do_mtx.cpp + src/m_Do/m_Do_ext.cpp + src/m_Do/m_Do_lib.cpp + src/m_Do/m_Do_Reset.cpp + src/m_Do/m_Do_dvd_thread.cpp + src/m_Do/m_Do_DVDError.cpp + src/m_Do/m_Do_MemCard.cpp + src/m_Do/m_Do_MemCardRWmng.cpp + src/m_Do/m_Do_machine_exception.cpp + src/m_Do/m_Do_hostIO.cpp + src/c/c_damagereaction.cpp + src/c/c_dylink.cpp + src/f_ap/f_ap_game.cpp + src/f_op/f_op_actor.cpp + src/f_op/f_op_actor_iter.cpp + src/f_op/f_op_actor_tag.cpp + src/f_op/f_op_camera.cpp + src/f_op/f_op_actor_mng.cpp + src/f_op/f_op_camera_mng.cpp + src/f_op/f_op_overlap.cpp + src/f_op/f_op_overlap_mng.cpp + src/f_op/f_op_overlap_req.cpp + src/f_op/f_op_scene.cpp + src/f_op/f_op_scene_iter.cpp + src/f_op/f_op_scene_mng.cpp + src/f_op/f_op_scene_req.cpp + src/f_op/f_op_scene_tag.cpp + src/f_op/f_op_view.cpp + src/f_op/f_op_kankyo.cpp + src/f_op/f_op_msg.cpp + src/f_op/f_op_kankyo_mng.cpp + src/f_op/f_op_msg_mng.cpp + src/f_op/f_op_draw_iter.cpp + src/f_op/f_op_draw_tag.cpp + src/f_op/f_op_scene_pause.cpp + src/f_pc/f_pc_base.cpp + src/f_pc/f_pc_create_iter.cpp + src/f_pc/f_pc_create_req.cpp + src/f_pc/f_pc_create_tag.cpp + src/f_pc/f_pc_creator.cpp + src/f_pc/f_pc_delete_tag.cpp + src/f_pc/f_pc_deletor.cpp + src/f_pc/f_pc_draw_priority.cpp + src/f_pc/f_pc_executor.cpp + src/f_pc/f_pc_layer.cpp + src/f_pc/f_pc_leaf.cpp + src/f_pc/f_pc_layer_iter.cpp + src/f_pc/f_pc_layer_tag.cpp + src/f_pc/f_pc_line.cpp + src/f_pc/f_pc_load.cpp + src/f_pc/f_pc_manager.cpp + src/f_pc/f_pc_method.cpp + src/f_pc/f_pc_node.cpp + src/f_pc/f_pc_node_req.cpp + src/f_pc/f_pc_priority.cpp + src/f_pc/f_pc_profile.cpp + src/f_pc/f_pc_searcher.cpp + src/f_pc/f_pc_line_tag.cpp + src/f_pc/f_pc_line_iter.cpp + src/f_pc/f_pc_method_iter.cpp + src/f_pc/f_pc_method_tag.cpp + src/f_pc/f_pc_pause.cpp + src/f_pc/f_pc_draw.cpp + src/f_pc/f_pc_fstcreate_req.cpp + src/f_pc/f_pc_stdcreate_req.cpp + src/f_pc/f_pc_debug_sv.cpp + src/d/d_stage.cpp + src/d/d_map.cpp + src/d/d_com_inf_game.cpp + src/d/d_com_static.cpp + src/d/d_com_inf_actor.cpp + src/d/d_bomb.cpp + src/d/d_lib.cpp + src/d/d_save.cpp + src/d/d_save_init.cpp + src/d/d_jnt_col.cpp + src/d/d_a_obj.cpp + src/d/d_a_itembase_static.cpp + src/d/d_a_item_static.cpp + src/d/d_a_shop_item_static.cpp + src/d/d_a_horse_static.cpp + src/d/d_demo.cpp + src/d/d_door_param2.cpp + src/d/d_resorce.cpp + src/d/d_map_path.cpp + src/d/d_map_path_fmap.cpp + src/d/d_map_path_dmap.cpp + src/d/d_event.cpp + src/d/d_event_data.cpp + src/d/d_event_manager.cpp + src/d/d_event_lib.cpp + src/d/d_simple_model.cpp + src/d/d_particle.cpp + src/d/d_particle_name.cpp + src/d/d_particle_copoly.cpp + src/d/d_path.cpp + src/d/d_drawlist.cpp + src/d/d_kankyo_data.cpp + src/d/d_kankyo_wether.cpp + src/d/d_kankyo_rain.cpp + src/d/d_kankyo_debug.cpp + src/d/d_vibration.cpp + src/d/d_vib_pattern.cpp + src/d/d_attention.cpp + src/d/d_bg_parts.cpp + src/d/d_bg_pc.cpp + src/d/d_att_dist.cpp + src/d/d_bg_plc.cpp + src/d/d_bg_s.cpp + src/d/d_bg_s_acch.cpp + src/d/d_bg_s_chk.cpp + src/d/d_bg_s_gnd_chk.cpp + src/d/d_bg_s_grp_pass_chk.cpp + src/d/d_bg_s_lin_chk.cpp + src/d/d_bg_s_movebg_actor.cpp + src/d/d_bg_s_sph_chk.cpp + src/d/d_bg_s_spl_grp_chk.cpp + src/d/d_bg_s_poly_pass_chk.cpp + src/d/d_bg_s_roof_chk.cpp + src/d/d_bg_s_wtr_chk.cpp + src/d/d_bg_w.cpp + src/d/d_bg_w_base.cpp + src/d/d_bg_w_kcol.cpp + src/d/d_bg_w_sv.cpp + src/d/d_cc_d.cpp + src/d/d_cc_mass_s.cpp + src/d/d_cc_s.cpp + src/d/d_cc_uty.cpp + src/d/d_cam_param.cpp + src/d/d_ev_camera.cpp + src/d/d_spline_path.cpp + src/d/d_item_data.cpp + src/d/d_item.cpp + src/d/d_tresure.cpp + src/d/d_model.cpp + src/d/d_eye_hl.cpp + src/d/d_error_msg.cpp + src/d/d_debug_viewer.cpp + src/d/d_debug_camera.cpp + src/d/actor/d_a_alink.cpp + src/d/actor/d_a_itembase.cpp + src/d/actor/d_a_no_chg_room.cpp + src/d/actor/d_a_npc.cpp + src/d/actor/d_a_npc_cd.cpp + src/d/actor/d_a_npc_cd2.cpp + src/d/actor/d_a_obj_item.cpp + src/d/d_insect.cpp + src/d/actor/d_a_obj_ss_base.cpp + src/d/actor/d_a_player.cpp + src/d/d_camera.cpp + src/d/d_envse.cpp + src/d/d_file_select.cpp + src/d/d_file_sel_warning.cpp + src/d/d_file_sel_info.cpp + src/d/d_bright_check.cpp + src/d/d_scope.cpp + src/d/d_select_cursor.cpp + src/d/d_select_icon.cpp + src/d/d_shop_camera.cpp + src/d/d_shop_item_ctrl.cpp + src/d/d_shop_system.cpp + src/d/d_gameover.cpp + src/d/d_kankyo.cpp + src/d/d_kyeff.cpp + src/d/d_kyeff2.cpp + src/d/d_ky_thunder.cpp + src/d/d_kantera_icon_meter.cpp + src/d/d_menu_calibration.cpp + src/d/d_menu_collect.cpp + src/d/d_menu_dmap.cpp + src/d/d_menu_dmap_map.cpp + src/d/d_menu_map_common.cpp + src/d/d_menu_fishing.cpp + src/d/d_menu_fmap.cpp + src/d/d_menu_fmap_map.cpp + src/d/d_menu_fmap2D.cpp + src/d/d_menu_insect.cpp + src/d/d_menu_item_explain.cpp + src/d/d_menu_letter.cpp + src/d/d_menu_option.cpp + src/d/d_menu_ring.cpp + src/d/d_menu_save.cpp + src/d/d_menu_skill.cpp + src/d/d_menu_window_HIO.cpp + src/d/d_menu_window.cpp + src/d/d_meter_HIO.cpp + src/d/d_meter_button.cpp + src/d/d_meter_haihai.cpp + src/d/d_meter_hakusha.cpp + src/d/d_meter_map.cpp + src/d/d_meter_string.cpp + src/d/d_meter2_draw.cpp + src/d/d_meter2_info.cpp + src/d/d_meter2.cpp + src/d/d_msg_out_font.cpp + src/d/d_msg_class.cpp + src/d/d_msg_object.cpp + src/d/d_msg_unit.cpp + src/d/d_msg_scrn_3select.cpp + src/d/d_msg_scrn_arrow.cpp + src/d/d_msg_scrn_base.cpp + src/d/d_msg_scrn_boss.cpp + src/d/d_msg_scrn_explain.cpp + src/d/d_msg_scrn_item.cpp + src/d/d_msg_scrn_howl.cpp + src/d/d_msg_scrn_jimaku.cpp + src/d/d_msg_scrn_kanban.cpp + src/d/d_msg_scrn_light.cpp + src/d/d_msg_scrn_place.cpp + src/d/d_msg_scrn_staff.cpp + src/d/d_msg_scrn_talk.cpp + src/d/d_msg_scrn_tree.cpp + src/d/d_msg_string_base.cpp + src/d/d_msg_string.cpp + src/d/d_msg_flow.cpp + src/d/d_name.cpp + src/d/d_npc_lib.cpp + src/d/d_ovlp_fade.cpp + src/d/d_ovlp_fade2.cpp + src/d/d_ovlp_fade3.cpp + src/d/d_pane_class.cpp + src/d/d_pane_class_alpha.cpp + src/d/d_pane_class_ex.cpp + src/d/d_s_logo.cpp + src/d/d_s_menu.cpp + src/d/d_s_name.cpp + src/d/d_s_play.cpp + src/d/d_s_room.cpp + src/d/d_s_title.cpp + src/d/d_save_HIO.cpp + src/d/d_timer.cpp + src/d/d_k_wmark.cpp + src/d/d_k_wpillar.cpp + src/DynamicLink.cpp + src/CaptureScreen.cpp +) +if(DEBUG) + list(APPEND DOLZEL_FILES src/d/d_event_debug.cpp) +endif(DEBUG) + +set(Z2AUDIOLIB_FILES + src/Z2AudioLib/Z2Calc.cpp + src/Z2AudioLib/Z2AudioArcLoader.cpp + src/Z2AudioLib/Z2Param.cpp + src/Z2AudioLib/Z2SoundMgr.cpp + src/Z2AudioLib/Z2SoundStarter.cpp + src/Z2AudioLib/Z2SoundHandles.cpp + src/Z2AudioLib/Z2SeMgr.cpp + src/Z2AudioLib/Z2SeqMgr.cpp + src/Z2AudioLib/Z2StatusMgr.cpp + src/Z2AudioLib/Z2SceneMgr.cpp + src/Z2AudioLib/Z2FxLineMgr.cpp + src/Z2AudioLib/Z2SoundInfo.cpp + src/Z2AudioLib/Z2Audience.cpp + src/Z2AudioLib/Z2SoundObject.cpp + src/Z2AudioLib/Z2SoundObjMgr.cpp + src/Z2AudioLib/Z2Creature.cpp + src/Z2AudioLib/Z2LinkMgr.cpp + src/Z2AudioLib/Z2EnvSeMgr.cpp + src/Z2AudioLib/Z2WolfHowlMgr.cpp + src/Z2AudioLib/Z2SpeechMgr2.cpp + src/Z2AudioLib/Z2AudioMgr.cpp +) + +set(SSYSTEM_FILES + src/SSystem/SComponent/c_malloc.cpp + src/SSystem/SComponent/c_API.cpp + src/SSystem/SComponent/c_API_controller_pad.cpp + src/SSystem/SComponent/c_API_graphic.cpp + src/SSystem/SComponent/c_cc_d.cpp + src/SSystem/SComponent/c_cc_s.cpp + src/SSystem/SComponent/c_counter.cpp + src/SSystem/SComponent/c_list.cpp + src/SSystem/SComponent/c_list_iter.cpp + src/SSystem/SComponent/c_node.cpp + src/SSystem/SComponent/c_node_iter.cpp + src/SSystem/SComponent/c_tree.cpp + src/SSystem/SComponent/c_tree_iter.cpp + src/SSystem/SComponent/c_phase.cpp + src/SSystem/SComponent/c_request.cpp + src/SSystem/SComponent/c_tag.cpp + src/SSystem/SComponent/c_tag_iter.cpp + src/SSystem/SComponent/c_xyz.cpp + src/SSystem/SComponent/c_sxyz.cpp + src/SSystem/SComponent/c_math.cpp + src/SSystem/SComponent/c_bg_s_chk.cpp + src/SSystem/SComponent/c_bg_s_gnd_chk.cpp + src/SSystem/SComponent/c_bg_s_lin_chk.cpp + src/SSystem/SComponent/c_bg_s_shdw_draw.cpp + src/SSystem/SComponent/c_bg_s_poly_info.cpp + src/SSystem/SComponent/c_bg_w.cpp + src/SSystem/SComponent/c_m2d.cpp + src/SSystem/SComponent/c_m3d.cpp + src/SSystem/SComponent/c_m3d_g_aab.cpp + src/SSystem/SComponent/c_m3d_g_cir.cpp + src/SSystem/SComponent/c_m3d_g_cps.cpp + src/SSystem/SComponent/c_m3d_g_cyl.cpp + src/SSystem/SComponent/c_m3d_g_lin.cpp + src/SSystem/SComponent/c_m3d_g_pla.cpp + src/SSystem/SComponent/c_m3d_g_sph.cpp + src/SSystem/SComponent/c_m3d_g_tri.cpp + src/SSystem/SComponent/c_m3d_g_vtx.cpp + src/SSystem/SComponent/c_lib.cpp + src/SSystem/SComponent/c_angle.cpp + src/SSystem/SStandard/s_basic.cpp +) + +set(JSYSTEM_FILES + src/JSystem/JFramework/JFWSystem.cpp + src/JSystem/JFramework/JFWDisplay.cpp + src/JSystem/J3DU/J3DUClipper.cpp + src/JSystem/J3DU/J3DUDL.cpp + src/JSystem/JParticle/JPAResourceManager.cpp + src/JSystem/JParticle/JPAResource.cpp + src/JSystem/JParticle/JPABaseShape.cpp + src/JSystem/JParticle/JPAExtraShape.cpp + src/JSystem/JParticle/JPAChildShape.cpp + src/JSystem/JParticle/JPAExTexShape.cpp + src/JSystem/JParticle/JPADynamicsBlock.cpp + src/JSystem/JParticle/JPAFieldBlock.cpp + src/JSystem/JParticle/JPAKeyBlock.cpp + src/JSystem/JParticle/JPATexture.cpp + src/JSystem/JParticle/JPAResourceLoader.cpp + src/JSystem/JParticle/JPAEmitterManager.cpp + src/JSystem/JParticle/JPAEmitter.cpp + src/JSystem/JParticle/JPAParticle.cpp + src/JSystem/JParticle/JPAMath.cpp + src/JSystem/JStage/JSGActor.cpp + src/JSystem/JStage/JSGAmbientLight.cpp + src/JSystem/JStage/JSGCamera.cpp + src/JSystem/JStage/JSGFog.cpp + src/JSystem/JStage/JSGLight.cpp + src/JSystem/JStage/JSGObject.cpp + src/JSystem/JStage/JSGSystem.cpp + src/JSystem/JStudio/JStudio/ctb.cpp + src/JSystem/JStudio/JStudio/ctb-data.cpp + src/JSystem/JStudio/JStudio/functionvalue.cpp + src/JSystem/JStudio/JStudio/fvb.cpp + src/JSystem/JStudio/JStudio/fvb-data.cpp + src/JSystem/JStudio/JStudio/fvb-data-parse.cpp + src/JSystem/JStudio/JStudio/jstudio-control.cpp + src/JSystem/JStudio/JStudio/jstudio-data.cpp + src/JSystem/JStudio/JStudio/jstudio-math.cpp + src/JSystem/JStudio/JStudio/jstudio-object.cpp + src/JSystem/JStudio/JStudio/object-id.cpp + src/JSystem/JStudio/JStudio/stb.cpp + src/JSystem/JStudio/JStudio/stb-data-parse.cpp + src/JSystem/JStudio/JStudio/stb-data.cpp + src/JSystem/JStudio/JStudio_JStage/control.cpp + src/JSystem/JStudio/JStudio_JStage/object.cpp + src/JSystem/JStudio/JStudio_JStage/object-actor.cpp + src/JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp + src/JSystem/JStudio/JStudio_JStage/object-camera.cpp + src/JSystem/JStudio/JStudio_JStage/object-fog.cpp + src/JSystem/JStudio/JStudio_JStage/object-light.cpp + src/JSystem/JStudio/JStudio_JAudio2/control.cpp + src/JSystem/JStudio/JStudio_JAudio2/object-sound.cpp + src/JSystem/JStudio/JStudio_JParticle/control.cpp + src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp + src/JSystem/JAudio2/JASCalc.cpp + src/JSystem/JAudio2/JASTaskThread.cpp + src/JSystem/JAudio2/JASDvdThread.cpp + src/JSystem/JAudio2/JASCallback.cpp + src/JSystem/JAudio2/JASHeapCtrl.cpp + src/JSystem/JAudio2/JASResArcLoader.cpp + src/JSystem/JAudio2/JASProbe.cpp + src/JSystem/JAudio2/JASReport.cpp + src/JSystem/JAudio2/JASCmdStack.cpp + src/JSystem/JAudio2/JASTrack.cpp + src/JSystem/JAudio2/JASTrackPort.cpp + src/JSystem/JAudio2/JASRegisterParam.cpp + src/JSystem/JAudio2/JASSeqCtrl.cpp + src/JSystem/JAudio2/JASSeqParser.cpp + src/JSystem/JAudio2/JASSeqReader.cpp + src/JSystem/JAudio2/JASAramStream.cpp + src/JSystem/JAudio2/JASBank.cpp + src/JSystem/JAudio2/JASBasicBank.cpp + src/JSystem/JAudio2/JASVoiceBank.cpp + src/JSystem/JAudio2/JASBasicInst.cpp + src/JSystem/JAudio2/JASDrumSet.cpp + src/JSystem/JAudio2/JASBasicWaveBank.cpp + src/JSystem/JAudio2/JASSimpleWaveBank.cpp + src/JSystem/JAudio2/JASWSParser.cpp + src/JSystem/JAudio2/JASBNKParser.cpp + src/JSystem/JAudio2/JASWaveArcLoader.cpp + src/JSystem/JAudio2/JASChannel.cpp + src/JSystem/JAudio2/JASLfo.cpp + src/JSystem/JAudio2/JASOscillator.cpp + src/JSystem/JAudio2/JASAiCtrl.cpp + src/JSystem/JAudio2/JASAudioThread.cpp + src/JSystem/JAudio2/JASAudioReseter.cpp + src/JSystem/JAudio2/JASDSPChannel.cpp + src/JSystem/JAudio2/JASDSPInterface.cpp + src/JSystem/JAudio2/JASDriverIF.cpp + src/JSystem/JAudio2/JASSoundParams.cpp + src/JSystem/JAudio2/dspproc.cpp + src/JSystem/JAudio2/dsptask.cpp + src/JSystem/JAudio2/osdsp.cpp + src/JSystem/JAudio2/osdsp_task.cpp + src/JSystem/JAudio2/JAIAudible.cpp + src/JSystem/JAudio2/JAIAudience.cpp + src/JSystem/JAudio2/JAISe.cpp + src/JSystem/JAudio2/JAISeMgr.cpp + src/JSystem/JAudio2/JAISeq.cpp + src/JSystem/JAudio2/JAISeqDataMgr.cpp + src/JSystem/JAudio2/JAISeqMgr.cpp + src/JSystem/JAudio2/JAISound.cpp + src/JSystem/JAudio2/JAISoundChild.cpp + src/JSystem/JAudio2/JAISoundHandles.cpp + src/JSystem/JAudio2/JAISoundInfo.cpp + src/JSystem/JAudio2/JAISoundParams.cpp + src/JSystem/JAudio2/JAISoundStarter.cpp + src/JSystem/JAudio2/JAIStream.cpp + src/JSystem/JAudio2/JAIStreamDataMgr.cpp + src/JSystem/JAudio2/JAIStreamMgr.cpp + src/JSystem/JAudio2/JAUAudioArcInterpreter.cpp + src/JSystem/JAudio2/JAUAudioArcLoader.cpp + src/JSystem/JAudio2/JAUAudioMgr.cpp + src/JSystem/JAudio2/JAUBankTable.cpp + src/JSystem/JAudio2/JAUClusterSound.cpp + src/JSystem/JAudio2/JAUInitializer.cpp + src/JSystem/JAudio2/JAUSectionHeap.cpp + src/JSystem/JAudio2/JAUSeqCollection.cpp + src/JSystem/JAudio2/JAUSeqDataBlockMgr.cpp + src/JSystem/JAudio2/JAUSoundAnimator.cpp + src/JSystem/JAudio2/JAUSoundTable.cpp + src/JSystem/JAudio2/JAUStreamFileTable.cpp + src/JSystem/JMessage/control.cpp + src/JSystem/JMessage/data.cpp + src/JSystem/JMessage/processor.cpp + src/JSystem/JMessage/resource.cpp + src/JSystem/JMessage/locale.cpp + src/JSystem/JKernel/JKRHeap.cpp + src/JSystem/JKernel/JKRExpHeap.cpp + src/JSystem/JKernel/JKRSolidHeap.cpp + src/JSystem/JKernel/JKRAssertHeap.cpp + src/JSystem/JKernel/JKRDisposer.cpp + src/JSystem/JKernel/JKRThread.cpp + src/JSystem/JKernel/JKRAram.cpp + src/JSystem/JKernel/JKRAramHeap.cpp + src/JSystem/JKernel/JKRAramBlock.cpp + src/JSystem/JKernel/JKRAramPiece.cpp + src/JSystem/JKernel/JKRAramStream.cpp + src/JSystem/JKernel/JKRFileLoader.cpp + src/JSystem/JKernel/JKRFileFinder.cpp + src/JSystem/JKernel/JKRFileCache.cpp + src/JSystem/JKernel/JKRArchivePub.cpp + src/JSystem/JKernel/JKRArchivePri.cpp + src/JSystem/JKernel/JKRMemArchive.cpp + src/JSystem/JKernel/JKRAramArchive.cpp + src/JSystem/JKernel/JKRDvdArchive.cpp + src/JSystem/JKernel/JKRCompArchive.cpp + src/JSystem/JKernel/JKRFile.cpp + src/JSystem/JKernel/JKRDvdFile.cpp + src/JSystem/JKernel/JKRDvdRipper.cpp + src/JSystem/JKernel/JKRDvdAramRipper.cpp + src/JSystem/JKernel/JKRDecomp.cpp + src/JSystem/JSupport/JSUList.cpp + src/JSystem/JSupport/JSUInputStream.cpp + src/JSystem/JSupport/JSUOutputStream.cpp + src/JSystem/JSupport/JSUMemoryStream.cpp + src/JSystem/JSupport/JSUFileStream.cpp + src/JSystem/JGadget/binary.cpp + src/JSystem/JGadget/linklist.cpp + src/JSystem/JGadget/std-vector.cpp + src/JSystem/JUtility/JUTCacheFont.cpp + src/JSystem/JUtility/JUTResource.cpp + src/JSystem/JUtility/JUTTexture.cpp + src/JSystem/JUtility/JUTPalette.cpp + src/JSystem/JUtility/JUTNameTab.cpp + src/JSystem/JUtility/JUTGraphFifo.cpp + src/JSystem/JUtility/JUTFont.cpp + src/JSystem/JUtility/JUTResFont.cpp + src/JSystem/JUtility/JUTDbPrint.cpp + src/JSystem/JUtility/JUTGamePad.cpp + src/JSystem/JUtility/JUTException.cpp + src/JSystem/JUtility/JUTDirectPrint.cpp + src/JSystem/JUtility/JUTAssert.cpp + src/JSystem/JUtility/JUTVideo.cpp + src/JSystem/JUtility/JUTXfb.cpp + src/JSystem/JUtility/JUTFader.cpp + src/JSystem/JUtility/JUTProcBar.cpp + src/JSystem/JUtility/JUTConsole.cpp + src/JSystem/JUtility/JUTDirectFile.cpp + src/JSystem/JUtility/JUTFontData_Ascfont_fix12.cpp + src/JSystem/J2DGraph/J2DGrafContext.cpp + src/JSystem/J2DGraph/J2DOrthoGraph.cpp + src/JSystem/J2DGraph/J2DTevs.cpp + src/JSystem/J2DGraph/J2DMaterial.cpp + src/JSystem/J2DGraph/J2DMatBlock.cpp + src/JSystem/J2DGraph/J2DMaterialFactory.cpp + src/JSystem/J2DGraph/J2DPrint.cpp + src/JSystem/J2DGraph/J2DPane.cpp + src/JSystem/J2DGraph/J2DScreen.cpp + src/JSystem/J2DGraph/J2DWindow.cpp + src/JSystem/J2DGraph/J2DPicture.cpp + src/JSystem/J2DGraph/J2DTextBox.cpp + src/JSystem/J2DGraph/J2DWindowEx.cpp + src/JSystem/J2DGraph/J2DPictureEx.cpp + src/JSystem/J2DGraph/J2DTextBoxEx.cpp + src/JSystem/J2DGraph/J2DAnmLoader.cpp + src/JSystem/J2DGraph/J2DAnimation.cpp + src/JSystem/J2DGraph/J2DManage.cpp + src/JSystem/J3DGraphBase/J3DGD.cpp + src/JSystem/J3DGraphBase/J3DSys.cpp + src/JSystem/J3DGraphBase/J3DVertex.cpp + src/JSystem/J3DGraphBase/J3DTransform.cpp + src/JSystem/J3DGraphBase/J3DTexture.cpp + src/JSystem/J3DGraphBase/J3DPacket.cpp + src/JSystem/J3DGraphBase/J3DShapeMtx.cpp + src/JSystem/J3DGraphBase/J3DShapeDraw.cpp + src/JSystem/J3DGraphBase/J3DShape.cpp + src/JSystem/J3DGraphBase/J3DMaterial.cpp + src/JSystem/J3DGraphBase/J3DMatBlock.cpp + src/JSystem/J3DGraphBase/J3DTevs.cpp + src/JSystem/J3DGraphBase/J3DDrawBuffer.cpp + src/JSystem/J3DGraphBase/J3DStruct.cpp + src/JSystem/J3DGraphAnimator/J3DShapeTable.cpp + src/JSystem/J3DGraphAnimator/J3DJointTree.cpp + src/JSystem/J3DGraphAnimator/J3DModelData.cpp + src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp + src/JSystem/J3DGraphAnimator/J3DModel.cpp + src/JSystem/J3DGraphAnimator/J3DAnimation.cpp + src/JSystem/J3DGraphAnimator/J3DMaterialAnm.cpp + src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp + src/JSystem/J3DGraphAnimator/J3DCluster.cpp + src/JSystem/J3DGraphAnimator/J3DJoint.cpp + src/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp + src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp + src/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp + src/JSystem/J3DGraphLoader/J3DClusterLoader.cpp + src/JSystem/J3DGraphLoader/J3DModelLoader.cpp + src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp + src/JSystem/J3DGraphLoader/J3DJointFactory.cpp + src/JSystem/J3DGraphLoader/J3DShapeFactory.cpp + src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp + src/JSystem/JMath/JMath.cpp + src/JSystem/JMath/random.cpp + src/JSystem/JMath/JMATrigonometric.cpp + src/JSystem/JHostIO/JORHostInfo.cpp + src/JSystem/JHostIO/JORServer.cpp + src/JSystem/JHostIO/JHIhioASync.cpp + src/JSystem/JHostIO/JHIRMcc.cpp + src/JSystem/JHostIO/JHIMccBuf.cpp +) + +set(REL_FILES + src/f_pc/f_pc_profile_lst.cpp + src/d/actor/d_a_andsw.cpp + src/d/actor/d_a_bg.cpp + src/d/actor/d_a_bg_obj.cpp + src/d/actor/d_a_dmidna.cpp + src/d/actor/d_a_door_dbdoor00.cpp + src/d/actor/d_a_door_knob00.cpp + src/d/actor/d_a_door_shutter.cpp + src/d/actor/d_a_door_spiral.cpp + src/d/actor/d_a_dshutter.cpp + src/d/actor/d_a_ep.cpp + src/d/actor/d_a_hitobj.cpp + src/d/actor/d_a_kytag00.cpp + src/d/actor/d_a_kytag04.cpp + src/d/actor/d_a_kytag17.cpp + src/d/actor/d_a_obj_brakeeff.cpp + src/d/actor/d_a_obj_burnbox.cpp + src/d/actor/d_a_obj_carry.cpp + src/d/actor/d_a_obj_ito.cpp + src/d/actor/d_a_obj_movebox.cpp + src/d/actor/d_a_obj_swpush.cpp + src/d/actor/d_a_obj_timer.cpp + src/d/actor/d_a_path_line.cpp + src/d/actor/d_a_scene_exit.cpp + src/d/actor/d_a_set_bgobj.cpp + src/d/actor/d_a_swhit0.cpp + src/d/actor/d_a_tag_allmato.cpp + src/d/actor/d_a_tag_camera.cpp + src/d/actor/d_a_tag_chkpoint.cpp + src/d/actor/d_a_tag_event.cpp + src/d/actor/d_a_tag_evt.cpp + src/d/actor/d_a_tag_evtarea.cpp + src/d/actor/d_a_tag_evtmsg.cpp + src/d/actor/d_a_tag_howl.cpp + src/d/actor/d_a_tag_kmsg.cpp + src/d/actor/d_a_tag_lantern.cpp + src/d/actor/d_a_tag_mist.cpp + src/d/actor/d_a_tag_msg.cpp + src/d/actor/d_a_tag_push.cpp + src/d/actor/d_a_tag_telop.cpp + src/d/actor/d_a_tbox.cpp + src/d/actor/d_a_tbox2.cpp + src/d/actor/d_a_vrbox.cpp + src/d/actor/d_a_vrbox2.cpp + src/d/actor/d_a_arrow.cpp + src/d/actor/d_a_boomerang.cpp + src/d/actor/d_a_crod.cpp + src/d/actor/d_a_demo00.cpp + src/d/actor/d_a_disappear.cpp + src/d/actor/d_a_mg_rod.cpp + src/d/actor/d_a_midna.cpp + src/d/actor/d_a_nbomb.cpp + src/d/actor/d_a_obj_life_container.cpp + src/d/actor/d_a_obj_yousei.cpp + src/d/actor/d_a_spinner.cpp + src/d/actor/d_a_suspend.cpp + src/d/actor/d_a_tag_attention.cpp + src/d/actor/d_a_alldie.cpp + src/d/actor/d_a_andsw2.cpp + src/d/actor/d_a_bd.cpp + src/d/actor/d_a_canoe.cpp + src/d/actor/d_a_cstaF.cpp + src/d/actor/d_a_demo_item.cpp + src/d/actor/d_a_door_bossL1.cpp + src/d/actor/d_a_e_dn.cpp + src/d/actor/d_a_e_fm.cpp + src/d/actor/d_a_e_ga.cpp + src/d/actor/d_a_e_hb.cpp + src/d/actor/d_a_e_nest.cpp + src/d/actor/d_a_e_rd.cpp + src/d/actor/d_a_econt.cpp + src/d/actor/d_a_fr.cpp + src/d/actor/d_a_grass.cpp + src/d/actor/d_a_kytag05.cpp + src/d/actor/d_a_kytag10.cpp + src/d/actor/d_a_kytag11.cpp + src/d/actor/d_a_kytag14.cpp + src/d/actor/d_a_mg_fish.cpp + src/d/actor/d_a_npc_besu.cpp + src/d/actor/d_a_npc_fairy_seirei.cpp + src/d/actor/d_a_npc_fish.cpp + src/d/actor/d_a_npc_henna.cpp + src/d/actor/d_a_npc_kakashi.cpp + src/d/actor/d_a_npc_kkri.cpp + src/d/actor/d_a_npc_kolin.cpp + src/d/actor/d_a_npc_maro.cpp + src/d/actor/d_a_npc_taro.cpp + src/d/actor/d_a_npc_tkj.cpp + src/d/actor/d_a_obj_bhashi.cpp + src/d/actor/d_a_obj_bkdoor.cpp + src/d/actor/d_a_obj_bosswarp.cpp + src/d/actor/d_a_obj_cboard.cpp + src/d/actor/d_a_obj_digplace.cpp + src/d/actor/d_a_obj_eff.cpp + src/d/actor/d_a_obj_fmobj.cpp + src/d/actor/d_a_obj_gpTaru.cpp + src/d/actor/d_a_obj_hhashi.cpp + src/d/actor/d_a_obj_kanban2.cpp + src/d/actor/d_a_obj_kbacket.cpp + src/d/actor/d_a_obj_kgate.cpp + src/d/actor/d_a_obj_klift00.cpp + src/d/actor/d_a_obj_ktOnFire.cpp + src/d/actor/d_a_obj_ladder.cpp + src/d/actor/d_a_obj_lv2Candle.cpp + src/d/actor/d_a_obj_magne_arm.cpp + src/d/actor/d_a_obj_metalbox.cpp + src/d/actor/d_a_obj_mgate.cpp + src/d/actor/d_a_obj_nameplate.cpp + src/d/actor/d_a_obj_ornament_cloth.cpp + src/d/actor/d_a_obj_rope_bridge.cpp + src/d/actor/d_a_obj_sWallShutter.cpp + src/d/actor/d_a_obj_stick.cpp + src/d/actor/d_a_obj_stoneMark.cpp + src/d/actor/d_a_obj_swpropeller.cpp + src/d/actor/d_a_obj_swpush5.cpp + src/d/actor/d_a_obj_yobikusa.cpp + src/d/actor/d_a_scene_exit2.cpp + src/d/actor/d_a_shop_item.cpp + src/d/actor/d_a_sq.cpp + src/d/actor/d_a_swc00.cpp + src/d/actor/d_a_tag_CstaSw.cpp + src/d/actor/d_a_tag_ajnot.cpp + src/d/actor/d_a_tag_attack_item.cpp + src/d/actor/d_a_tag_gstart.cpp + src/d/actor/d_a_tag_hinit.cpp + src/d/actor/d_a_tag_hjump.cpp + src/d/actor/d_a_tag_hstop.cpp + src/d/actor/d_a_tag_lv2prchk.cpp + src/d/actor/d_a_tag_magne.cpp + src/d/actor/d_a_tag_mhint.cpp + src/d/actor/d_a_tag_mstop.cpp + src/d/actor/d_a_tag_spring.cpp + src/d/actor/d_a_tag_statue_evt.cpp + src/d/actor/d_a_ykgr.cpp + src/d/actor/d_a_L7demo_dr.cpp + src/d/actor/d_a_L7low_dr.cpp + src/d/actor/d_a_L7op_demo_dr.cpp + src/d/actor/d_a_b_bh.cpp + src/d/actor/d_a_b_bq.cpp + src/d/actor/d_a_b_dr.cpp + src/d/actor/d_a_b_dre.cpp + src/d/actor/d_a_b_ds.cpp + src/d/actor/d_a_b_gg.cpp + src/d/actor/d_a_b_gm.cpp + src/d/actor/d_a_b_gnd.cpp + src/d/actor/d_a_b_go.cpp + src/d/actor/d_a_b_gos.cpp + src/d/actor/d_a_b_mgn.cpp + src/d/actor/d_a_b_ob.cpp + src/d/actor/d_a_b_oh.cpp + src/d/actor/d_a_b_oh2.cpp + src/d/actor/d_a_b_tn.cpp + src/d/actor/d_a_b_yo.cpp + src/d/actor/d_a_b_yo_ice.cpp + src/d/actor/d_a_b_zant.cpp + src/d/actor/d_a_b_zant_magic.cpp + src/d/actor/d_a_b_zant_mobile.cpp + src/d/actor/d_a_b_zant_sima.cpp + src/d/actor/d_a_balloon_2D.cpp + src/d/actor/d_a_bullet.cpp + src/d/actor/d_a_coach_2D.cpp + src/d/actor/d_a_coach_fire.cpp + src/d/actor/d_a_cow.cpp + src/d/actor/d_a_cstatue.cpp + src/d/actor/d_a_do.cpp + src/d/actor/d_a_door_boss.cpp + src/d/actor/d_a_door_bossL5.cpp + src/d/actor/d_a_door_mbossL1.cpp + src/d/actor/d_a_door_push.cpp + src/d/actor/d_a_e_ai.cpp + src/d/actor/d_a_e_arrow.cpp + src/d/actor/d_a_e_ba.cpp + src/d/actor/d_a_e_bee.cpp + src/d/actor/d_a_e_bg.cpp + src/d/actor/d_a_e_bi.cpp + src/d/actor/d_a_e_bi_leaf.cpp + src/d/actor/d_a_e_bs.cpp + src/d/actor/d_a_e_bu.cpp + src/d/actor/d_a_e_bug.cpp + src/d/actor/d_a_e_cr.cpp + src/d/actor/d_a_e_cr_egg.cpp + src/d/actor/d_a_e_db.cpp + src/d/actor/d_a_e_db_leaf.cpp + src/d/actor/d_a_e_dd.cpp + src/d/actor/d_a_e_df.cpp + src/d/actor/d_a_e_dk.cpp + src/d/actor/d_a_e_dt.cpp + src/d/actor/d_a_e_fb.cpp + src/d/actor/d_a_e_fk.cpp + src/d/actor/d_a_e_fs.cpp + src/d/actor/d_a_e_fz.cpp + src/d/actor/d_a_e_gb.cpp + src/d/actor/d_a_e_ge.cpp + src/d/actor/d_a_e_gi.cpp + src/d/actor/d_a_e_gm.cpp + src/d/actor/d_a_e_gob.cpp + src/d/actor/d_a_e_gs.cpp + src/d/actor/d_a_e_hb_leaf.cpp + src/d/actor/d_a_e_hm.cpp + src/d/actor/d_a_e_hp.cpp + src/d/actor/d_a_e_hz.cpp + src/d/actor/d_a_e_hzelda.cpp + src/d/actor/d_a_e_is.cpp + src/d/actor/d_a_e_kg.cpp + src/d/actor/d_a_e_kk.cpp + src/d/actor/d_a_e_kr.cpp + src/d/actor/d_a_e_mb.cpp + src/d/actor/d_a_e_md.cpp + src/d/actor/d_a_e_mf.cpp + src/d/actor/d_a_e_mk.cpp + src/d/actor/d_a_e_mk_bo.cpp + src/d/actor/d_a_e_mm.cpp + src/d/actor/d_a_e_mm_mt.cpp + src/d/actor/d_a_e_ms.cpp + src/d/actor/d_a_e_nz.cpp + src/d/actor/d_a_e_oc.cpp + src/d/actor/d_a_e_oct_bg.cpp + src/d/actor/d_a_e_ot.cpp + src/d/actor/d_a_e_ph.cpp + src/d/actor/d_a_e_pm.cpp + src/d/actor/d_a_e_po.cpp + src/d/actor/d_a_e_pz.cpp + src/d/actor/d_a_e_rb.cpp + src/d/actor/d_a_e_rdb.cpp + src/d/actor/d_a_e_rdy.cpp + src/d/actor/d_a_e_s1.cpp + src/d/actor/d_a_e_sb.cpp + src/d/actor/d_a_e_sf.cpp + src/d/actor/d_a_e_sg.cpp + src/d/actor/d_a_e_sh.cpp + src/d/actor/d_a_e_sm.cpp + src/d/actor/d_a_e_sm2.cpp + src/d/actor/d_a_e_st.cpp + src/d/actor/d_a_e_st_line.cpp + src/d/actor/d_a_e_sw.cpp + src/d/actor/d_a_e_th.cpp + src/d/actor/d_a_e_th_ball.cpp + src/d/actor/d_a_e_tk.cpp + src/d/actor/d_a_e_tk2.cpp + src/d/actor/d_a_e_tk_ball.cpp + src/d/actor/d_a_e_tt.cpp + src/d/actor/d_a_e_vt.cpp + src/d/actor/d_a_e_warpappear.cpp + src/d/actor/d_a_e_wb.cpp + src/d/actor/d_a_e_ws.cpp + src/d/actor/d_a_e_ww.cpp + src/d/actor/d_a_e_yc.cpp + src/d/actor/d_a_e_yd.cpp + src/d/actor/d_a_e_yd_leaf.cpp + src/d/actor/d_a_e_yg.cpp + src/d/actor/d_a_e_yh.cpp + src/d/actor/d_a_e_yk.cpp + src/d/actor/d_a_e_ym.cpp + src/d/actor/d_a_e_ym_tag.cpp + src/d/actor/d_a_e_ymb.cpp + src/d/actor/d_a_e_yr.cpp + src/d/actor/d_a_e_zh.cpp + src/d/actor/d_a_e_zm.cpp + src/d/actor/d_a_e_zs.cpp + src/d/actor/d_a_formation_mng.cpp + src/d/actor/d_a_guard_mng.cpp + src/d/actor/d_a_horse.cpp + src/d/actor/d_a_hozelda.cpp + src/d/actor/d_a_izumi_gate.cpp + src/d/actor/d_a_kago.cpp + src/d/actor/d_a_kytag01.cpp + src/d/actor/d_a_kytag02.cpp + src/d/actor/d_a_kytag03.cpp + src/d/actor/d_a_kytag06.cpp + src/d/actor/d_a_kytag07.cpp + src/d/actor/d_a_kytag08.cpp + src/d/actor/d_a_kytag09.cpp + src/d/actor/d_a_kytag12.cpp + src/d/actor/d_a_kytag13.cpp + src/d/actor/d_a_kytag15.cpp + src/d/actor/d_a_kytag16.cpp + src/d/actor/d_a_mant.cpp + src/d/actor/d_a_mg_fshop.cpp + src/d/actor/d_a_mirror.cpp + src/d/actor/d_a_movie_player.cpp + src/d/actor/d_a_myna.cpp + src/d/actor/d_a_ni.cpp + src/d/actor/d_a_npc_aru.cpp + src/d/actor/d_a_npc_ash.cpp + src/d/actor/d_a_npc_ashB.cpp + src/d/actor/d_a_npc_bans.cpp + src/d/actor/d_a_npc_blue_ns.cpp + src/d/actor/d_a_npc_bou.cpp + src/d/actor/d_a_npc_bouS.cpp + src/d/actor/d_a_npc_cdn3.cpp + src/d/actor/d_a_npc_chat.cpp + src/d/actor/d_a_npc_chin.cpp + src/d/actor/d_a_npc_clerka.cpp + src/d/actor/d_a_npc_clerkb.cpp + src/d/actor/d_a_npc_clerkt.cpp + src/d/actor/d_a_npc_coach.cpp + src/d/actor/d_a_npc_df.cpp + src/d/actor/d_a_npc_doc.cpp + src/d/actor/d_a_npc_doorboy.cpp + src/d/actor/d_a_npc_drainSol.cpp + src/d/actor/d_a_npc_du.cpp + src/d/actor/d_a_npc_fairy.cpp + src/d/actor/d_a_npc_fguard.cpp + src/d/actor/d_a_npc_gnd.cpp + src/d/actor/d_a_npc_gra.cpp + src/d/actor/d_a_npc_grc.cpp + src/d/actor/d_a_npc_grd.cpp + src/d/actor/d_a_npc_grm.cpp + src/d/actor/d_a_npc_grmc.cpp + src/d/actor/d_a_npc_gro.cpp + src/d/actor/d_a_npc_grr.cpp + src/d/actor/d_a_npc_grs.cpp + src/d/actor/d_a_npc_grz.cpp + src/d/actor/d_a_npc_guard.cpp + src/d/actor/d_a_npc_gwolf.cpp + src/d/actor/d_a_npc_hanjo.cpp + src/d/actor/d_a_npc_henna0.cpp + src/d/actor/d_a_npc_hoz.cpp + src/d/actor/d_a_npc_impal.cpp + src/d/actor/d_a_npc_inko.cpp + src/d/actor/d_a_npc_ins.cpp + src/d/actor/d_a_npc_jagar.cpp + src/d/actor/d_a_npc_kasi_hana.cpp + src/d/actor/d_a_npc_kasi_kyu.cpp + src/d/actor/d_a_npc_kasi_mich.cpp + src/d/actor/d_a_npc_kdk.cpp + src/d/actor/d_a_npc_kn.cpp + src/d/actor/d_a_npc_knj.cpp + src/d/actor/d_a_npc_kolinb.cpp + src/d/actor/d_a_npc_ks.cpp + src/d/actor/d_a_npc_kyury.cpp + src/d/actor/d_a_npc_len.cpp + src/d/actor/d_a_npc_lf.cpp + src/d/actor/d_a_npc_lud.cpp + src/d/actor/d_a_npc_midp.cpp + src/d/actor/d_a_npc_mk.cpp + src/d/actor/d_a_npc_moi.cpp + src/d/actor/d_a_npc_moir.cpp + src/d/actor/d_a_npc_myna2.cpp + src/d/actor/d_a_npc_ne.cpp + src/d/actor/d_a_npc_p2.cpp + src/d/actor/d_a_npc_pachi_besu.cpp + src/d/actor/d_a_npc_pachi_maro.cpp + src/d/actor/d_a_npc_pachi_taro.cpp + src/d/actor/d_a_npc_passer.cpp + src/d/actor/d_a_npc_passer2.cpp + src/d/actor/d_a_npc_post.cpp + src/d/actor/d_a_npc_pouya.cpp + src/d/actor/d_a_npc_prayer.cpp + src/d/actor/d_a_npc_raca.cpp + src/d/actor/d_a_npc_rafrel.cpp + src/d/actor/d_a_npc_saru.cpp + src/d/actor/d_a_npc_seib.cpp + src/d/actor/d_a_npc_seic.cpp + src/d/actor/d_a_npc_seid.cpp + src/d/actor/d_a_npc_seira.cpp + src/d/actor/d_a_npc_seira2.cpp + src/d/actor/d_a_npc_seirei.cpp + src/d/actor/d_a_npc_shad.cpp + src/d/actor/d_a_npc_shaman.cpp + src/d/actor/d_a_npc_shoe.cpp + src/d/actor/d_a_npc_shop0.cpp + src/d/actor/d_a_npc_shop_maro.cpp + src/d/actor/d_a_npc_sola.cpp + src/d/actor/d_a_npc_soldierA.cpp + src/d/actor/d_a_npc_soldierB.cpp + src/d/actor/d_a_npc_sq.cpp + src/d/actor/d_a_npc_the.cpp + src/d/actor/d_a_npc_theB.cpp + src/d/actor/d_a_npc_tk.cpp + src/d/actor/d_a_npc_tkc.cpp + src/d/actor/d_a_npc_tkj2.cpp + src/d/actor/d_a_npc_tks.cpp + src/d/actor/d_a_npc_toby.cpp + src/d/actor/d_a_npc_tr.cpp + src/d/actor/d_a_npc_uri.cpp + src/d/actor/d_a_npc_worm.cpp + src/d/actor/d_a_npc_wrestler.cpp + src/d/actor/d_a_npc_yamid.cpp + src/d/actor/d_a_npc_yamis.cpp + src/d/actor/d_a_npc_yamit.cpp + src/d/actor/d_a_npc_yelia.cpp + src/d/actor/d_a_npc_ykm.cpp + src/d/actor/d_a_npc_ykw.cpp + src/d/actor/d_a_npc_zanb.cpp + src/d/actor/d_a_npc_zant.cpp + src/d/actor/d_a_npc_zelR.cpp + src/d/actor/d_a_npc_zelRo.cpp + src/d/actor/d_a_npc_zelda.cpp + src/d/actor/d_a_npc_zra.cpp + src/d/actor/d_a_npc_zrc.cpp + src/d/actor/d_a_npc_zrz.cpp + src/d/actor/d_a_obj_Lv5Key.cpp + src/d/actor/d_a_obj_Turara.cpp + src/d/actor/d_a_obj_TvCdlst.cpp + src/d/actor/d_a_obj_Y_taihou.cpp + src/d/actor/d_a_obj_amiShutter.cpp + src/d/actor/d_a_obj_ari.cpp + src/d/actor/d_a_obj_automata.cpp + src/d/actor/d_a_obj_avalanche.cpp + src/d/actor/d_a_obj_balloon.cpp + src/d/actor/d_a_obj_barDesk.cpp + src/d/actor/d_a_obj_batta.cpp + src/d/actor/d_a_obj_bbox.cpp + src/d/actor/d_a_obj_bed.cpp + src/d/actor/d_a_obj_bemos.cpp + src/d/actor/d_a_obj_bhbridge.cpp + src/d/actor/d_a_obj_bk_leaf.cpp + src/d/actor/d_a_obj_bky_rock.cpp + src/d/actor/d_a_obj_bmWindow.cpp + src/d/actor/d_a_obj_bmshutter.cpp + src/d/actor/d_a_obj_bombf.cpp + src/d/actor/d_a_obj_boumato.cpp + src/d/actor/d_a_obj_brg.cpp + src/d/actor/d_a_obj_bsGate.cpp + src/d/actor/d_a_obj_bubblePilar.cpp + src/d/actor/d_a_obj_catdoor.cpp + src/d/actor/d_a_obj_cb.cpp + src/d/actor/d_a_obj_cblock.cpp + src/d/actor/d_a_obj_cdoor.cpp + src/d/actor/d_a_obj_chandelier.cpp + src/d/actor/d_a_obj_chest.cpp + src/d/actor/d_a_obj_cho.cpp + src/d/actor/d_a_obj_cowdoor.cpp + src/d/actor/d_a_obj_crope.cpp + src/d/actor/d_a_obj_crvfence.cpp + src/d/actor/d_a_obj_crvgate.cpp + src/d/actor/d_a_obj_crvhahen.cpp + src/d/actor/d_a_obj_crvlh_down.cpp + src/d/actor/d_a_obj_crvlh_up.cpp + src/d/actor/d_a_obj_crvsteel.cpp + src/d/actor/d_a_obj_crystal.cpp + src/d/actor/d_a_obj_cwall.cpp + src/d/actor/d_a_obj_damCps.cpp + src/d/actor/d_a_obj_dan.cpp + src/d/actor/d_a_obj_digholl.cpp + src/d/actor/d_a_obj_digsnow.cpp + src/d/actor/d_a_obj_dmelevator.cpp + src/d/actor/d_a_obj_drop.cpp + src/d/actor/d_a_obj_dust.cpp + src/d/actor/d_a_obj_enemy_create.cpp + src/d/actor/d_a_obj_fallobj.cpp + src/d/actor/d_a_obj_fan.cpp + src/d/actor/d_a_obj_fchain.cpp + src/d/actor/d_a_obj_fireWood.cpp + src/d/actor/d_a_obj_fireWood2.cpp + src/d/actor/d_a_obj_firepillar.cpp + src/d/actor/d_a_obj_firepillar2.cpp + src/d/actor/d_a_obj_flag.cpp + src/d/actor/d_a_obj_flag2.cpp + src/d/actor/d_a_obj_flag3.cpp + src/d/actor/d_a_obj_food.cpp + src/d/actor/d_a_obj_fw.cpp + src/d/actor/d_a_obj_gadget.cpp + src/d/actor/d_a_obj_ganonwall.cpp + src/d/actor/d_a_obj_ganonwall2.cpp + src/d/actor/d_a_obj_gb.cpp + src/d/actor/d_a_obj_geyser.cpp + src/d/actor/d_a_obj_glowSphere.cpp + src/d/actor/d_a_obj_gm.cpp + src/d/actor/d_a_obj_goGate.cpp + src/d/actor/d_a_obj_gomikabe.cpp + src/d/actor/d_a_obj_gra2.cpp + src/d/actor/d_a_obj_graWall.cpp + src/d/actor/d_a_obj_gra_rock.cpp + src/d/actor/d_a_obj_grave_stone.cpp + src/d/actor/d_a_obj_groundwater.cpp + src/d/actor/d_a_obj_grz_rock.cpp + src/d/actor/d_a_obj_h_saku.cpp + src/d/actor/d_a_obj_hakai_brl.cpp + src/d/actor/d_a_obj_hakai_ftr.cpp + src/d/actor/d_a_obj_hasu2.cpp + src/d/actor/d_a_obj_hata.cpp + src/d/actor/d_a_obj_hb.cpp + src/d/actor/d_a_obj_hbombkoya.cpp + src/d/actor/d_a_obj_heavySw.cpp + src/d/actor/d_a_obj_hfuta.cpp + src/d/actor/d_a_obj_hsTarget.cpp + src/d/actor/d_a_obj_ice_l.cpp + src/d/actor/d_a_obj_ice_s.cpp + src/d/actor/d_a_obj_iceblock.cpp + src/d/actor/d_a_obj_iceleaf.cpp + src/d/actor/d_a_obj_ihasi.cpp + src/d/actor/d_a_obj_ikada.cpp + src/d/actor/d_a_obj_inobone.cpp + src/d/actor/d_a_obj_ita.cpp + src/d/actor/d_a_obj_itamato.cpp + src/d/actor/d_a_obj_kabuto.cpp + src/d/actor/d_a_obj_kag.cpp + src/d/actor/d_a_obj_kage.cpp + src/d/actor/d_a_obj_kago.cpp + src/d/actor/d_a_obj_kaisou.cpp + src/d/actor/d_a_obj_kamakiri.cpp + src/d/actor/d_a_obj_kantera.cpp + src/d/actor/d_a_obj_katatsumuri.cpp + src/d/actor/d_a_obj_kazeneko.cpp + src/d/actor/d_a_obj_kbox.cpp + src/d/actor/d_a_obj_key.cpp + src/d/actor/d_a_obj_keyhole.cpp + src/d/actor/d_a_obj_ki.cpp + src/d/actor/d_a_obj_kiPot.cpp + src/d/actor/d_a_obj_kita.cpp + src/d/actor/d_a_obj_kjgjs.cpp + src/d/actor/d_a_obj_kkanban.cpp + src/d/actor/d_a_obj_knBullet.cpp + src/d/actor/d_a_obj_kshutter.cpp + src/d/actor/d_a_obj_kuwagata.cpp + src/d/actor/d_a_obj_kwheel00.cpp + src/d/actor/d_a_obj_kwheel01.cpp + src/d/actor/d_a_obj_kznkarm.cpp + src/d/actor/d_a_obj_laundry.cpp + src/d/actor/d_a_obj_laundry_rope.cpp + src/d/actor/d_a_obj_lbox.cpp + src/d/actor/d_a_obj_lp.cpp + src/d/actor/d_a_obj_lv1Candle00.cpp + src/d/actor/d_a_obj_lv1Candle01.cpp + src/d/actor/d_a_obj_lv3Candle.cpp + src/d/actor/d_a_obj_lv3Water.cpp + src/d/actor/d_a_obj_lv3Water2.cpp + src/d/actor/d_a_obj_lv3WaterB.cpp + src/d/actor/d_a_obj_lv3saka00.cpp + src/d/actor/d_a_obj_lv3waterEff.cpp + src/d/actor/d_a_obj_lv4CandleDemoTag.cpp + src/d/actor/d_a_obj_lv4CandleTag.cpp + src/d/actor/d_a_obj_lv4EdShutter.cpp + src/d/actor/d_a_obj_lv4Gate.cpp + src/d/actor/d_a_obj_lv4HsTarget.cpp + src/d/actor/d_a_obj_lv4PoGate.cpp + src/d/actor/d_a_obj_lv4RailWall.cpp + src/d/actor/d_a_obj_lv4SlideWall.cpp + src/d/actor/d_a_obj_lv4bridge.cpp + src/d/actor/d_a_obj_lv4chandelier.cpp + src/d/actor/d_a_obj_lv4digsand.cpp + src/d/actor/d_a_obj_lv4floor.cpp + src/d/actor/d_a_obj_lv4gear.cpp + src/d/actor/d_a_obj_lv4prelvtr.cpp + src/d/actor/d_a_obj_lv4prwall.cpp + src/d/actor/d_a_obj_lv4sand.cpp + src/d/actor/d_a_obj_lv5FloorBoard.cpp + src/d/actor/d_a_obj_lv5IceWall.cpp + src/d/actor/d_a_obj_lv5SwIce.cpp + src/d/actor/d_a_obj_lv5ychndlr.cpp + src/d/actor/d_a_obj_lv5yiblltray.cpp + src/d/actor/d_a_obj_lv6ChangeGate.cpp + src/d/actor/d_a_obj_lv6FurikoTrap.cpp + src/d/actor/d_a_obj_lv6Lblock.cpp + src/d/actor/d_a_obj_lv6SwGate.cpp + src/d/actor/d_a_obj_lv6SzGate.cpp + src/d/actor/d_a_obj_lv6Tenbin.cpp + src/d/actor/d_a_obj_lv6TogeRoll.cpp + src/d/actor/d_a_obj_lv6TogeTrap.cpp + src/d/actor/d_a_obj_lv6bemos.cpp + src/d/actor/d_a_obj_lv6bemos2.cpp + src/d/actor/d_a_obj_lv6egate.cpp + src/d/actor/d_a_obj_lv6elevta.cpp + src/d/actor/d_a_obj_lv6swturn.cpp + src/d/actor/d_a_obj_lv7BsGate.cpp + src/d/actor/d_a_obj_lv7PropellerY.cpp + src/d/actor/d_a_obj_lv7bridge.cpp + src/d/actor/d_a_obj_lv8KekkaiTrap.cpp + src/d/actor/d_a_obj_lv8Lift.cpp + src/d/actor/d_a_obj_lv8OptiLift.cpp + src/d/actor/d_a_obj_lv8UdFloor.cpp + src/d/actor/d_a_obj_lv9SwShutter.cpp + src/d/actor/d_a_obj_magLift.cpp + src/d/actor/d_a_obj_magLiftRot.cpp + src/d/actor/d_a_obj_maki.cpp + src/d/actor/d_a_obj_master_sword.cpp + src/d/actor/d_a_obj_mato.cpp + src/d/actor/d_a_obj_mhole.cpp + src/d/actor/d_a_obj_mie.cpp + src/d/actor/d_a_obj_mirror_6pole.cpp + src/d/actor/d_a_obj_mirror_chain.cpp + src/d/actor/d_a_obj_mirror_sand.cpp + src/d/actor/d_a_obj_mirror_screw.cpp + src/d/actor/d_a_obj_mirror_table.cpp + src/d/actor/d_a_obj_msima.cpp + src/d/actor/d_a_obj_mvstair.cpp + src/d/actor/d_a_obj_myogan.cpp + src/d/actor/d_a_obj_nagaisu.cpp + src/d/actor/d_a_obj_nan.cpp + src/d/actor/d_a_obj_ndoor.cpp + src/d/actor/d_a_obj_nougu.cpp + src/d/actor/d_a_obj_octhashi.cpp + src/d/actor/d_a_obj_oiltubo.cpp + src/d/actor/d_a_obj_onsen.cpp + src/d/actor/d_a_obj_onsenFire.cpp + src/d/actor/d_a_obj_onsenTaru.cpp + src/d/actor/d_a_obj_pdoor.cpp + src/d/actor/d_a_obj_pdtile.cpp + src/d/actor/d_a_obj_pdwall.cpp + src/d/actor/d_a_obj_picture.cpp + src/d/actor/d_a_obj_pillar.cpp + src/d/actor/d_a_obj_pleaf.cpp + src/d/actor/d_a_obj_poCandle.cpp + src/d/actor/d_a_obj_poFire.cpp + src/d/actor/d_a_obj_poTbox.cpp + src/d/actor/d_a_obj_prop.cpp + src/d/actor/d_a_obj_pumpkin.cpp + src/d/actor/d_a_obj_rcircle.cpp + src/d/actor/d_a_obj_rfHole.cpp + src/d/actor/d_a_obj_rgate.cpp + src/d/actor/d_a_obj_riverrock.cpp + src/d/actor/d_a_obj_rock.cpp + src/d/actor/d_a_obj_rotBridge.cpp + src/d/actor/d_a_obj_rotTrap.cpp + src/d/actor/d_a_obj_roten.cpp + src/d/actor/d_a_obj_rstair.cpp + src/d/actor/d_a_obj_rw.cpp + src/d/actor/d_a_obj_saidan.cpp + src/d/actor/d_a_obj_sakuita.cpp + src/d/actor/d_a_obj_sakuita_rope.cpp + src/d/actor/d_a_obj_scannon.cpp + src/d/actor/d_a_obj_scannon_crs.cpp + src/d/actor/d_a_obj_scannon_ten.cpp + src/d/actor/d_a_obj_sekidoor.cpp + src/d/actor/d_a_obj_sekizo.cpp + src/d/actor/d_a_obj_sekizoa.cpp + src/d/actor/d_a_obj_shield.cpp + src/d/actor/d_a_obj_sm_door.cpp + src/d/actor/d_a_obj_smallkey.cpp + src/d/actor/d_a_obj_smgdoor.cpp + src/d/actor/d_a_obj_smoke.cpp + src/d/actor/d_a_obj_smtile.cpp + src/d/actor/d_a_obj_smw_stone.cpp + src/d/actor/d_a_obj_snowEffTag.cpp + src/d/actor/d_a_obj_snow_soup.cpp + src/d/actor/d_a_obj_so.cpp + src/d/actor/d_a_obj_spinLift.cpp + src/d/actor/d_a_obj_ss_drink.cpp + src/d/actor/d_a_obj_ss_item.cpp + src/d/actor/d_a_obj_stairBlock.cpp + src/d/actor/d_a_obj_stone.cpp + src/d/actor/d_a_obj_stopper.cpp + src/d/actor/d_a_obj_stopper2.cpp + src/d/actor/d_a_obj_suisya.cpp + src/d/actor/d_a_obj_sw.cpp + src/d/actor/d_a_obj_swBallA.cpp + src/d/actor/d_a_obj_swBallB.cpp + src/d/actor/d_a_obj_swBallC.cpp + src/d/actor/d_a_obj_swLight.cpp + src/d/actor/d_a_obj_swchain.cpp + src/d/actor/d_a_obj_swhang.cpp + src/d/actor/d_a_obj_sword.cpp + src/d/actor/d_a_obj_swpush2.cpp + src/d/actor/d_a_obj_swspinner.cpp + src/d/actor/d_a_obj_swturn.cpp + src/d/actor/d_a_obj_syRock.cpp + src/d/actor/d_a_obj_szbridge.cpp + src/d/actor/d_a_obj_taFence.cpp + src/d/actor/d_a_obj_table.cpp + src/d/actor/d_a_obj_takaraDai.cpp + src/d/actor/d_a_obj_tatigi.cpp + src/d/actor/d_a_obj_ten.cpp + src/d/actor/d_a_obj_testcube.cpp + src/d/actor/d_a_obj_tgake.cpp + src/d/actor/d_a_obj_thashi.cpp + src/d/actor/d_a_obj_thdoor.cpp + src/d/actor/d_a_obj_timeFire.cpp + src/d/actor/d_a_obj_tks.cpp + src/d/actor/d_a_obj_tmoon.cpp + src/d/actor/d_a_obj_toaru_maki.cpp + src/d/actor/d_a_obj_toby.cpp + src/d/actor/d_a_obj_tobyhouse.cpp + src/d/actor/d_a_obj_togeTrap.cpp + src/d/actor/d_a_obj_tombo.cpp + src/d/actor/d_a_obj_tornado.cpp + src/d/actor/d_a_obj_tornado2.cpp + src/d/actor/d_a_obj_tp.cpp + src/d/actor/d_a_obj_treesh.cpp + src/d/actor/d_a_obj_twGate.cpp + src/d/actor/d_a_obj_udoor.cpp + src/d/actor/d_a_obj_usaku.cpp + src/d/actor/d_a_obj_vground.cpp + src/d/actor/d_a_obj_volcball.cpp + src/d/actor/d_a_obj_volcbom.cpp + src/d/actor/d_a_obj_warp_kbrg.cpp + src/d/actor/d_a_obj_warp_obrg.cpp + src/d/actor/d_a_obj_waterGate.cpp + src/d/actor/d_a_obj_waterPillar.cpp + src/d/actor/d_a_obj_waterfall.cpp + src/d/actor/d_a_obj_wchain.cpp + src/d/actor/d_a_obj_wdStick.cpp + src/d/actor/d_a_obj_web0.cpp + src/d/actor/d_a_obj_web1.cpp + src/d/actor/d_a_obj_well_cover.cpp + src/d/actor/d_a_obj_wflag.cpp + src/d/actor/d_a_obj_wind_stone.cpp + src/d/actor/d_a_obj_window.cpp + src/d/actor/d_a_obj_wood_pendulum.cpp + src/d/actor/d_a_obj_wood_statue.cpp + src/d/actor/d_a_obj_wsword.cpp + src/d/actor/d_a_obj_yel_bag.cpp + src/d/actor/d_a_obj_ystone.cpp + src/d/actor/d_a_obj_zcloth.cpp + src/d/actor/d_a_obj_zdoor.cpp + src/d/actor/d_a_obj_zrTurara.cpp + src/d/actor/d_a_obj_zrTuraraRock.cpp + src/d/actor/d_a_obj_zraMark.cpp + src/d/actor/d_a_obj_zra_freeze.cpp + src/d/actor/d_a_obj_zra_rock.cpp + src/d/actor/d_a_passer_mng.cpp + src/d/actor/d_a_tag_arena.cpp + src/d/actor/d_a_peru.cpp + src/d/actor/d_a_ppolamp.cpp + src/d/actor/d_a_skip_2D.cpp + src/d/actor/d_a_startAndGoal.cpp + src/d/actor/d_a_swBall.cpp + src/d/actor/d_a_swLBall.cpp + src/d/actor/d_a_swTime.cpp + src/d/actor/d_a_tag_Lv6Gate.cpp + src/d/actor/d_a_tag_Lv7Gate.cpp + src/d/actor/d_a_tag_Lv8Gate.cpp + src/d/actor/d_a_tag_TWgate.cpp + src/d/actor/d_a_tag_lv6CstaSw.cpp + src/d/actor/d_a_tag_assistance.cpp + src/d/actor/d_a_tag_bottle_item.cpp + src/d/actor/d_a_tag_chgrestart.cpp + src/d/actor/d_a_tag_csw.cpp + src/d/actor/d_a_tag_escape.cpp + src/d/actor/d_a_tag_firewall.cpp + src/d/actor/d_a_tag_gra.cpp + src/d/actor/d_a_tag_guard.cpp + src/d/actor/d_a_tag_instruction.cpp + src/d/actor/d_a_tag_kago_fall.cpp + src/d/actor/d_a_tag_lightball.cpp + src/d/actor/d_a_tag_lv5soup.cpp + src/d/actor/d_a_tag_mmsg.cpp + src/d/actor/d_a_tag_mwait.cpp + src/d/actor/d_a_tag_myna2.cpp + src/d/actor/d_a_tag_myna_light.cpp + src/d/actor/d_a_tag_pachi.cpp + src/d/actor/d_a_tag_poFire.cpp + src/d/actor/d_a_tag_qs.cpp + src/d/actor/d_a_tag_ret_room.cpp + src/d/actor/d_a_tag_river_back.cpp + src/d/actor/d_a_tag_rmbit_sw.cpp + src/d/actor/d_a_tag_schedule.cpp + src/d/actor/d_a_tag_setBall.cpp + src/d/actor/d_a_tag_setrestart.cpp + src/d/actor/d_a_tag_shop_camera.cpp + src/d/actor/d_a_tag_shop_item.cpp + src/d/actor/d_a_tag_smk_emt.cpp + src/d/actor/d_a_tag_spinner.cpp + src/d/actor/d_a_tag_sppath.cpp + src/d/actor/d_a_tag_ss_drink.cpp + src/d/actor/d_a_tag_stream.cpp + src/d/actor/d_a_tag_theB_hint.cpp + src/d/actor/d_a_tag_wara_howl.cpp + src/d/actor/d_a_tag_watchge.cpp + src/d/actor/d_a_tag_waterfall.cpp + src/d/actor/d_a_tag_wljump.cpp + src/d/actor/d_a_tag_yami.cpp + src/d/actor/d_a_talk.cpp + src/d/actor/d_a_tboxSw.cpp + src/d/actor/d_a_title.cpp + src/d/actor/d_a_warp_bug.cpp +) + +set(DUSK_FILES + src/dusk/asserts.cpp + src/dusk/imgui.cpp + src/dusk/stubs.cpp + src/dusk/extras.c + src/dusk/extras.cpp + src/dusk/globals.cpp + src/dusk/J3DTransforms_C.cpp + #src/dusk/m_Do_ext_dusk.cpp + src/dusk/jsystem_stubs.cpp + src/dusk/dvd_emu.cpp + src/dolphin/os/OSContext.cpp + src/dolphin/os/OSThread.cpp + src/dolphin/os/OSMutex.cpp +) diff --git a/include/JSystem/J2DGraph/J2DAnimation.h b/include/JSystem/J2DGraph/J2DAnimation.h index 035be59253..c1408a898d 100644 --- a/include/JSystem/J2DGraph/J2DAnimation.h +++ b/include/JSystem/J2DGraph/J2DAnimation.h @@ -526,6 +526,32 @@ inline f32 J2DHermiteInterpolation(__REGISTER f32 pp1, __REGISTER s16* pp2, __RE fsubs fout, fout, ff0 } // clang-format on + return fout; +#else + f32 time1 = (f32)*pp2; + f32 value1 = (f32)*pp3; + f32 tangent1 = (f32)*pp4; + f32 time2 = (f32)*pp5; + f32 value2 = (f32)*pp6; + f32 tangent2 = (f32)*pp7; + + f32 duration = time2 - time1; + f32 t = (pp1 - time1) / duration; + f32 t2 = t * t; + + f32 dv = value2 - value1; + f32 ff4 = dv - duration * tangent1; + + f32 ff0 = tangent2 * duration + value1; + ff0 = ff0 - value2; + ff0 = ff0 - ff4; + ff0 = t2 * ff0; + + f32 fout = duration * tangent1 + ff0; + fout = fout * t + value1; + fout = ff4 * t2 + fout; + fout = fout - ff0; + return fout; #endif } diff --git a/include/JSystem/J3DGraphAnimator/J3DShapeTable.h b/include/JSystem/J3DGraphAnimator/J3DShapeTable.h index 9caba23ce9..54661058b4 100644 --- a/include/JSystem/J3DGraphAnimator/J3DShapeTable.h +++ b/include/JSystem/J3DGraphAnimator/J3DShapeTable.h @@ -1,7 +1,7 @@ #ifndef J3DSHAPETABLE_H #define J3DSHAPETABLE_H -#include "JSystem/JUtility/JUTAssert.h" +#include "JSystem/J3DAssert.h" class J3DVertexData; struct J3DDrawMtxData; diff --git a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h index 4208d5d598..68be132081 100644 --- a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h +++ b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h @@ -26,6 +26,8 @@ inline f32 J3DCalcZValue(__REGISTER MtxP m, __REGISTER Vec v) { // clang-format on return out; +#else + return m[2][0] * v.x + m[2][1] * v.y + m[2][2] * v.z + m[2][3]; #endif } diff --git a/include/JSystem/J3DGraphBase/J3DFifo.h b/include/JSystem/J3DGraphBase/J3DFifo.h index c93943864c..a1cd2ff5b8 100644 --- a/include/JSystem/J3DGraphBase/J3DFifo.h +++ b/include/JSystem/J3DGraphBase/J3DFifo.h @@ -16,15 +16,27 @@ inline void J3DFifoWriteXFCmdHdr(u16 addr, u8 len) { } inline void J3DFifoLoadIndx(u8 cmd, u16 indx, u16 addr) { +#ifdef TARGET_PC + GXCmd1u8(cmd); + GXCmd1u16(indx); + GXCmd1u16(addr); +#else GXWGFifo.u8 = cmd; GXWGFifo.u16 = indx; GXWGFifo.u16 = addr; +#endif } inline void J3DFifoWriteCPCmd(u8 cmd, u32 param) { +#ifdef TARGET_PC + GXCmd1u8(GX_LOAD_CP_REG); + GXCmd1u8(cmd); + GXCmd1u32(param); +#else GXWGFifo.u8 = GX_LOAD_CP_REG; GXWGFifo.u8 = cmd; GXWGFifo.u32 = param; +#endif } inline void J3DFifoLoadCPCmd(u8 reg, u32 value) { @@ -34,9 +46,15 @@ inline void J3DFifoLoadCPCmd(u8 reg, u32 value) { } inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) { +#ifdef TARGET_PC + GXCmd1u8(GX_LOAD_XF_REG); + GXCmd1u16(len - 1); + GXCmd1u16(cmd); +#else GXWGFifo.u8 = GX_LOAD_XF_REG; GXWGFifo.u16 = (len - 1); GXWGFifo.u16 = cmd; +#endif } inline void J3DFifoLoadXFCmdHdr(u16 addr, u8 len) { diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h index 151f4235ab..8687b2b794 100644 --- a/include/JSystem/J3DGraphBase/J3DShape.h +++ b/include/JSystem/J3DGraphBase/J3DShape.h @@ -100,7 +100,7 @@ protected: class J3DMaterial; class J3DVertexData; -class J3DDrawMtxData; +struct J3DDrawMtxData; enum J3DShpFlag { J3DShpFlag_Visible = 0x0001, diff --git a/include/JSystem/J3DGraphBase/J3DStruct.h b/include/JSystem/J3DGraphBase/J3DStruct.h index cd41270401..3faf248d84 100644 --- a/include/JSystem/J3DGraphBase/J3DStruct.h +++ b/include/JSystem/J3DGraphBase/J3DStruct.h @@ -5,6 +5,7 @@ #include #include #include "global.h" +#include "JSystem/JMath/JMath.h" /** * @ingroup jsystem-j3d diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h index 2f6c692e02..cc19cda7e6 100644 --- a/include/JSystem/J3DGraphBase/J3DSys.h +++ b/include/JSystem/J3DGraphBase/J3DSys.h @@ -4,6 +4,7 @@ #include #include #include "JSystem/J3DAssert.h" +#include "JSystem/JMath/JMath.h" enum J3DSysDrawBuf { /* 0x0 */ J3DSysDrawBuf_Opa, diff --git a/include/JSystem/J3DGraphBase/J3DTransform.h b/include/JSystem/J3DGraphBase/J3DTransform.h index 5dccb2bc9b..07b717a9ab 100644 --- a/include/JSystem/J3DGraphBase/J3DTransform.h +++ b/include/JSystem/J3DGraphBase/J3DTransform.h @@ -2,6 +2,7 @@ #define J3DTRANSFORM_H #include +#include "JSystem/JMath/JMath.h" struct J3DTextureSRTInfo; diff --git a/include/JSystem/J3DU/J3DUClipper.h b/include/JSystem/J3DU/J3DUClipper.h index c8417b2a69..af5d655f12 100644 --- a/include/JSystem/J3DU/J3DUClipper.h +++ b/include/JSystem/J3DU/J3DUClipper.h @@ -18,8 +18,8 @@ public: void setFovy(f32 fovy) { mFovY = fovy; } void setAspect(f32 aspect) { mAspect = aspect; } - void setNear(f32 near) { mNear = near; } - void setFar(f32 far) { mFar = far; } + void setNear(f32 near_) { mNear = near_; } + void setFar(f32 far_) { mFar = far_; } f32 getFar() { return mFar; } diff --git a/include/JSystem/J3DU/J3DUD.h b/include/JSystem/J3DU/J3DUD.h index ec9357c96b..1386f1c6c8 100644 --- a/include/JSystem/J3DU/J3DUD.h +++ b/include/JSystem/J3DU/J3DUD.h @@ -1,14 +1,19 @@ #ifndef J3DUD_H #define J3DUD_H -#include +#include "dolphin/types.h" +#ifndef __MWERKS__ +#include +#endif namespace J3DUD { - inline f32 JMAAbs(f32 x) { - #ifdef __MWERKS__ - return __fabsf(x); - #endif - } +inline f32 JMAAbs(f32 x) { +#ifdef __MWERKS__ + return __fabsf(x); +#else + return fabsf(x); +#endif } +} // namespace J3DUD #endif /* J3DUD_H */ diff --git a/include/JSystem/JAWExtSystem/JAWExtSystem.h b/include/JSystem/JAWExtSystem/JAWExtSystem.h index 609592d832..a0a9fce32b 100644 --- a/include/JSystem/JAWExtSystem/JAWExtSystem.h +++ b/include/JSystem/JAWExtSystem/JAWExtSystem.h @@ -5,7 +5,7 @@ #include "JSystem/JGadget/std-list.h" class JAWWindow; -class JUTGamePad; +struct JUTGamePad; namespace JAWExtSystem { BOOL registWindow(u32, JAWWindow*, int, int); diff --git a/include/JSystem/JAWExtSystem/JAWWindow.h b/include/JSystem/JAWExtSystem/JAWWindow.h index 6228c10376..7a570565cd 100644 --- a/include/JSystem/JAWExtSystem/JAWWindow.h +++ b/include/JSystem/JAWExtSystem/JAWWindow.h @@ -7,7 +7,7 @@ #include "JSystem/JGeometry.h" class JAWGraphContext; -class JUTGamePad; +struct JUTGamePad; class JUTPoint { public: diff --git a/include/JSystem/JAWWinLib/JAWHioReceiver.h b/include/JSystem/JAWWinLib/JAWHioReceiver.h index bf89b70040..a38506f6af 100644 --- a/include/JSystem/JAWWinLib/JAWHioReceiver.h +++ b/include/JSystem/JAWWinLib/JAWHioReceiver.h @@ -6,7 +6,7 @@ #include "JSystem/JHostIO/JHICommonMem.h" #include "JSystem/JAudio2/JAISound.h" -class JAISeqData; +struct JAISeqData; class JADHioReceiver : JHITag { public: diff --git a/include/JSystem/JAudio2/JAISound.h b/include/JSystem/JAudio2/JAISound.h index 3e1e36b9ad..670b6604d1 100644 --- a/include/JSystem/JAudio2/JAISound.h +++ b/include/JSystem/JAudio2/JAISound.h @@ -68,7 +68,7 @@ public: } id_; }; -class JASTrack; +struct JASTrack; /** * @ingroup jsystem-jaudio @@ -250,7 +250,7 @@ public: class JAISoundHandle; class JAIAudible; -class JAIAudience; +struct JAIAudience; class JAISe; class JAISeq; class JAISoundChild; diff --git a/include/JSystem/JAudio2/JAIStreamMgr.h b/include/JSystem/JAudio2/JAIStreamMgr.h index 3b2b9c7f42..7c8e68a852 100644 --- a/include/JSystem/JAudio2/JAIStreamMgr.h +++ b/include/JSystem/JAudio2/JAIStreamMgr.h @@ -6,7 +6,7 @@ #include "JSystem/JUtility/JUTAssert.h" class JAIStreamAramMgr; -class JAIStreamDataMgr; +struct JAIStreamDataMgr; /** * @ingroup jsystem-jaudio diff --git a/include/JSystem/JAudio2/JASAramStream.h b/include/JSystem/JAudio2/JASAramStream.h index f737f76cd3..385b47f627 100644 --- a/include/JSystem/JAudio2/JASAramStream.h +++ b/include/JSystem/JAudio2/JASAramStream.h @@ -8,7 +8,7 @@ class JASChannel; namespace JASDsp { - class TChannel; + struct TChannel; } /** diff --git a/include/JSystem/JAudio2/JASBank.h b/include/JSystem/JAudio2/JASBank.h index f99d245d89..9c2fae3dfa 100644 --- a/include/JSystem/JAudio2/JASBank.h +++ b/include/JSystem/JAudio2/JASBank.h @@ -8,7 +8,7 @@ class JASInstParam; class JASWaveBank; namespace JASDsp { - class TChannel; + struct TChannel; } /** diff --git a/include/JSystem/JAudio2/JASCmdStack.h b/include/JSystem/JAudio2/JASCmdStack.h index c35a1146cb..2ad327362b 100644 --- a/include/JSystem/JAudio2/JASCmdStack.h +++ b/include/JSystem/JAudio2/JASCmdStack.h @@ -3,7 +3,7 @@ #include "JSystem/JSupport/JSUList.h" -class JASTrack; +struct JASTrack; /** * @ingroup jsystem-jaudio diff --git a/include/JSystem/JAudio2/JASGadget.h b/include/JSystem/JAudio2/JASGadget.h index 718ce02069..087e8028cd 100644 --- a/include/JSystem/JAudio2/JASGadget.h +++ b/include/JSystem/JAudio2/JASGadget.h @@ -33,6 +33,11 @@ public: static T* sInstance; }; +#ifndef __MWERKS__ +template +T* JASGlobalInstance::sInstance; +#endif + /** * @ingroup jsystem-jaudio * diff --git a/include/JSystem/JAudio2/JASHeapCtrl.h b/include/JSystem/JAudio2/JASHeapCtrl.h index 6c219ac091..3cdd338538 100644 --- a/include/JSystem/JAudio2/JASHeapCtrl.h +++ b/include/JSystem/JAudio2/JASHeapCtrl.h @@ -147,7 +147,7 @@ namespace JASKernel { JKRHeap* getSystemHeap(); }; * */ template class T> -class JASMemChunkPool : public T >::ObjectLevelLockable { +class JASMemChunkPool : public T > { struct MemoryChunk { MemoryChunk(MemoryChunk* nextChunk) { mNextChunk = nextChunk; diff --git a/include/JSystem/JAudio2/JASSeqCtrl.h b/include/JSystem/JAudio2/JASSeqCtrl.h index 974f1c7065..d481192d6f 100644 --- a/include/JSystem/JAudio2/JASSeqCtrl.h +++ b/include/JSystem/JAudio2/JASSeqCtrl.h @@ -3,7 +3,7 @@ #include "JSystem/JAudio2/JASSeqReader.h" -class JASTrack; +struct JASTrack; class JASSeqParser; /** diff --git a/include/JSystem/JAudio2/JASSeqParser.h b/include/JSystem/JAudio2/JASSeqParser.h index b9368b28ed..e8f425de84 100644 --- a/include/JSystem/JAudio2/JASSeqParser.h +++ b/include/JSystem/JAudio2/JASSeqParser.h @@ -3,7 +3,7 @@ #include -class JASTrack; +struct JASTrack; /** * @ingroup jsystem-jaudio diff --git a/include/JSystem/JAudio2/JASTrack.h b/include/JSystem/JAudio2/JASTrack.h index 4b0d3ea0fa..06a54ebec8 100644 --- a/include/JSystem/JAudio2/JASTrack.h +++ b/include/JSystem/JAudio2/JASTrack.h @@ -12,7 +12,7 @@ struct JASSoundParams; namespace JASDsp { - class TChannel; + struct TChannel; extern const u32 FILTER_MODE_IIR; }; diff --git a/include/JSystem/JAudio2/JAUSectionHeap.h b/include/JSystem/JAudio2/JAUSectionHeap.h index a7535500a4..b6aec38a31 100644 --- a/include/JSystem/JAudio2/JAUSectionHeap.h +++ b/include/JSystem/JAudio2/JAUSectionHeap.h @@ -6,10 +6,10 @@ #include "JSystem/JKernel/JKRDisposer.h" #include -class JAISeqData; -class JAISeqDataMgr; -class JAISeqDataUser; -class JAIStreamDataMgr; +struct JAISeqData; +struct JAISeqDataMgr; +struct JAISeqDataUser; +struct JAIStreamDataMgr; class JASVoiceBank; class JAUBankTableLink; class JAUDisposer_; diff --git a/include/JSystem/JAudio2/JAUSeqCollection.h b/include/JSystem/JAudio2/JAUSeqCollection.h index fae2688bed..37c5afc6d3 100644 --- a/include/JSystem/JAudio2/JAUSeqCollection.h +++ b/include/JSystem/JAudio2/JAUSeqCollection.h @@ -3,8 +3,8 @@ #include "JSystem/JAudio2/JAISeqDataMgr.h" -class JAISeqData; -class JAISeqDataRegion; +struct JAISeqData; +struct JAISeqDataRegion; /** * @ingroup jsystem-jaudio diff --git a/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h b/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h index aa77383a4f..5c04bf66d3 100644 --- a/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h +++ b/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h @@ -4,8 +4,8 @@ #include "JSystem/JAudio2/JAISeqDataMgr.h" #include "JSystem/JSupport/JSUList.h" -class JAISeqData; -class JAISeqDataUser; +struct JAISeqData; +struct JAISeqDataUser; class JKRArchive; /** diff --git a/include/JSystem/JGadget/define.h b/include/JSystem/JGadget/define.h index a8c7323e8f..3a1548e364 100644 --- a/include/JSystem/JGadget/define.h +++ b/include/JSystem/JGadget/define.h @@ -15,9 +15,11 @@ public: JGadget_outMessage(MessageFunc fn, const char* file, int line); ~JGadget_outMessage(); +#if !TARGET_PC JGadget_outMessage& operator<<(int param_1) { return *this << (s32)param_1; } - JGadget_outMessage& operator<<(u16); JGadget_outMessage& operator<<(uint); +#endif + JGadget_outMessage& operator<<(u16); JGadget_outMessage& operator<<(u8 param_1) { return *this << (char)param_1; } JGadget_outMessage& operator<<(const char* str); JGadget_outMessage& operator<<(char); diff --git a/include/JSystem/JGadget/search.h b/include/JSystem/JGadget/search.h index bbc5c9ce6c..be20e40158 100644 --- a/include/JSystem/JGadget/search.h +++ b/include/JSystem/JGadget/search.h @@ -9,7 +9,11 @@ namespace JGadget { namespace search { template -struct TExpandStride_ {}; +struct TExpandStride_ { +#ifdef _MSC_VER + static T get(T n) { return n << 3; } +#endif +}; template <> struct TExpandStride_ { diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h index 513d5242dd..773195392e 100644 --- a/include/JSystem/JGeometry.h +++ b/include/JSystem/JGeometry.h @@ -46,6 +46,10 @@ struct TUtil { f32 root = __frsqrte(x); root = 0.5f * root * (3.0f - x * (root * root)); return root; + #else + if (x <= 0.0f) + return x; + return 1.0f / std::sqrt(x); #endif } @@ -58,6 +62,10 @@ struct TUtil { f32 root = __frsqrte(x); root = 0.5f * root * (3.0f - x * (root * root)); return x * root; + #else + if (x <= 0.0f) + return x; + return std::sqrt(x); #endif } }; diff --git a/include/JSystem/JHostIO/JORMContext.h b/include/JSystem/JHostIO/JORMContext.h index ad4d19f9f1..72e85a74b0 100644 --- a/include/JSystem/JHostIO/JORMContext.h +++ b/include/JSystem/JHostIO/JORMContext.h @@ -2,7 +2,14 @@ #define JORMCONTEXT_H #include + +#ifdef _MSVC_LANG #include +#else +#include +#endif + +#include #include "JSystem/JHostIO/JORReflexible.h" #include "JSystem/JSupport/JSUMemoryStream.h" diff --git a/include/JSystem/JHostIO/JORReflexible.h b/include/JSystem/JHostIO/JORReflexible.h index a0e0aeaaa3..6af8780515 100644 --- a/include/JSystem/JHostIO/JORReflexible.h +++ b/include/JSystem/JHostIO/JORReflexible.h @@ -33,8 +33,8 @@ struct JORNodeEvent : JOREvent { /* 0x00 */ u32 field_0x0; }; -struct JORMContext; -struct JORServer; +class JORMContext; +class JORServer; class JOREventListener { public: diff --git a/include/JSystem/JKernel/JKRAramPiece.h b/include/JSystem/JKernel/JKRAramPiece.h index 25f304f02b..130f81203b 100644 --- a/include/JSystem/JKernel/JKRAramPiece.h +++ b/include/JSystem/JKernel/JKRAramPiece.h @@ -27,8 +27,8 @@ public: /* 0x40 */ s32 mTransferDirection; /* 0x44 */ u32 mDataLength; - /* 0x48 */ u32 mSrc; - /* 0x4C */ u32 mDst; + /* 0x48 */ uintptr_t mSrc; + /* 0x4C */ uintptr_t mDst; /* 0x50 */ JKRAramBlock* mAramBlock; /* 0x54 */ u32 field_0x54; /* 0x58 */ AsyncCallback mCallback; @@ -63,15 +63,15 @@ public: static JSUList sAramPieceCommandList; public: - static JKRAMCommand* prepareCommand(int, u32, u32, u32, JKRAramBlock*, + static JKRAMCommand* prepareCommand(int, uintptr_t, uintptr_t, u32, JKRAramBlock*, JKRAMCommand::AsyncCallback); static void sendCommand(JKRAMCommand*); - static JKRAMCommand* orderAsync(int, u32, u32, u32, JKRAramBlock*, JKRAMCommand::AsyncCallback); + static JKRAMCommand* orderAsync(int, uintptr_t, uintptr_t, u32, JKRAramBlock*, JKRAMCommand::AsyncCallback); static BOOL sync(JKRAMCommand*, int); - static BOOL orderSync(int, u32, u32, u32, JKRAramBlock*); + static BOOL orderSync(int, uintptr_t, uintptr_t, u32, JKRAramBlock*); static void startDMA(JKRAMCommand*); - static void doneDMA(u32); + static void doneDMA(uintptr_t); private: static void lock() { OSLockMutex(&mMutex); } @@ -82,7 +82,7 @@ inline void JKRAramPcs_SendCommand(JKRAMCommand* command) { JKRAramPiece::sendCommand(command); } -inline BOOL JKRAramPcs(int direction, u32 source, u32 destination, u32 length, +inline BOOL JKRAramPcs(int direction, uintptr_t source, uintptr_t destination, u32 length, JKRAramBlock* block) { return JKRAramPiece::orderSync(direction, source, destination, length, block); } diff --git a/include/JSystem/JKernel/JKRArchive.h b/include/JSystem/JKernel/JKRArchive.h index cf4b3ef045..c9cdd97f72 100644 --- a/include/JSystem/JKernel/JKRArchive.h +++ b/include/JSystem/JKernel/JKRArchive.h @@ -4,6 +4,7 @@ #include "JSystem/JKernel/JKRCompression.h" #include "JSystem/JKernel/JKRFileLoader.h" #include "global.h" +#include "dusk/endian.h" class JKRHeap; @@ -12,14 +13,14 @@ class JKRHeap; * */ struct SArcHeader { - /* 0x00 */ u32 signature; - /* 0x04 */ u32 file_length; - /* 0x08 */ u32 header_length; - /* 0x0C */ u32 file_data_offset; - /* 0x10 */ u32 file_data_length; - /* 0x14 */ u32 field_0x14; - /* 0x18 */ u32 field_0x18; - /* 0x1C */ u32 field_0x1c; + /* 0x00 */ BE(u32) signature; + /* 0x04 */ BE(u32) file_length; + /* 0x08 */ BE(u32) header_length; + /* 0x0C */ BE(u32) file_data_offset; + /* 0x10 */ BE(u32) file_data_length; + /* 0x14 */ BE(u32) field_0x14; + /* 0x18 */ BE(u32) field_0x18; + /* 0x1C */ BE(u32) field_0x1c; }; /** @@ -27,13 +28,13 @@ struct SArcHeader { * */ struct SArcDataInfo { - /* 0x00 */ u32 num_nodes; - /* 0x04 */ u32 node_offset; - /* 0x08 */ u32 num_file_entries; - /* 0x0C */ u32 file_entry_offset; - /* 0x10 */ u32 string_table_length; - /* 0x14 */ u32 string_table_offset; - /* 0x18 */ u16 next_free_file_id; + /* 0x00 */ BE(u32) num_nodes; + /* 0x04 */ BE(u32) node_offset; + /* 0x08 */ BE(u32) num_file_entries; + /* 0x0C */ BE(u32) file_entry_offset; + /* 0x10 */ BE(u32) string_table_length; + /* 0x14 */ BE(u32) string_table_offset; + /* 0x18 */ BE(u16) next_free_file_id; /* 0x1A */ bool sync_file_ids_and_indices; /* 0x1B */ u8 field_1b[5]; }; @@ -50,6 +51,12 @@ inline u16 read_big_endian_u16(void* ptr) { extern u32 sCurrentDirID__10JKRArchive; // JKRArchive::sCurrentDirID +#if TARGET_PC +#define JKAR_DATA(entry) getFileDataPointer(entry->index) +#else +#define JKAR_DATA(entry) entry->data +#endif + /** * @ingroup jsystem-jkernel * @@ -64,20 +71,29 @@ public: }; struct SDIDirEntry { - u32 type; - u32 name_offset; - u16 field_0x8; - u16 num_entries; - u32 first_file_index; + BE(u32) type; + BE(u32) name_offset; + BE(u16) field_0x8; + BE(u16) num_entries; + BE(u32) first_file_index; }; struct SDIFileEntry { - u16 file_id; - u16 name_hash; - u32 type_flags_and_name_offset; - u32 data_offset; - u32 data_size; + BE(u16) file_id; + BE(u16) name_hash; + BE(u32) type_flags_and_name_offset; + BE(u32) data_offset; + BE(u32) data_size; +#if TARGET_PC + // Yes, they store the data pointer in the datastructure that's directly loaded from + // archive files. + // We can't expand this struct to fit a 64-bit pointer, so instead + // we'll need to store this data in a separate array. + // Store the *index* of this entry (!= file_id), so we can look up the real pointer easily. + u32 index; +#else void* data; +#endif u32 getNameOffset() const { return type_flags_and_name_offset & 0xFFFFFF; } u16 getNameHash() const { return name_hash; } @@ -130,6 +146,11 @@ protected: JKRArchive(); JKRArchive(s32, EMountMode); +#if TARGET_PC + void*& getFileDataPointer(int idx) const; + void initFileDataPointers(); +#endif + public: bool getDirEntry(SDirEntry*, u32) const; void* getIdxResource(u32); @@ -188,6 +209,10 @@ public: /* 0x50 */ s32* mExpandedSize; /* 0x54 */ const char* mStringTable; +#if TARGET_PC + void** mFileData; +#endif + protected: /* 0x58 */ u32 field_0x58; /* 0x5C */ JKRCompression mCompression; diff --git a/include/JSystem/JKernel/JKRCompArchive.h b/include/JSystem/JKernel/JKRCompArchive.h index d5eb60448b..dd6dc5e1fc 100644 --- a/include/JSystem/JKernel/JKRCompArchive.h +++ b/include/JSystem/JKernel/JKRCompArchive.h @@ -28,7 +28,7 @@ public: private: /* 0x00 */ // vtable /* 0x04 */ // JKRArchive - /* 0x64 */ int field_0x64; + /* 0x64 */ intptr_t field_0x64; /* 0x68 */ JKRAramBlock* mAramPart; /* 0x6C */ int field_0x6c; /* 0x70 */ JKRDvdFile* mDvdFile; diff --git a/include/JSystem/JKernel/JKRExpHeap.h b/include/JSystem/JKernel/JKRExpHeap.h index 1535ba757b..a31b2c5e84 100644 --- a/include/JSystem/JKernel/JKRExpHeap.h +++ b/include/JSystem/JKernel/JKRExpHeap.h @@ -35,7 +35,7 @@ public: CMemBlock* getNextBlock() const { return mNext; } u32 getSize() const { return size; } u8 getGroupId() const { return mGroupId; } - static CMemBlock* getBlock(void* data) { return (CMemBlock*)((uintptr_t)data + -0x10); } + static CMemBlock* getBlock(void* data) { return (CMemBlock*)((uintptr_t)data + -sizeof(CMemBlock)); } private: /* 0x0 */ u16 mMagic; @@ -44,9 +44,17 @@ public: /* 0x4 */ u32 size; /* 0x8 */ CMemBlock* mPrev; /* 0xC */ CMemBlock* mNext; +#if BIT_64 + // Ensure padded to 0x20 bytes on 64-bit + void* _pad; +#endif }; // Size: 0x10 friend class CMemBlock; +#if TARGET_PC + static_assert(sizeof(CMemBlock) == MEM_BLOCK_SIZE); +#endif + protected: JKRExpHeap(void* data, u32 size, JKRHeap* parent, bool errorFlag); virtual ~JKRExpHeap(); diff --git a/include/JSystem/JKernel/JKRHeap.h b/include/JSystem/JKernel/JKRHeap.h index c23b72180f..67fb6b8e6d 100644 --- a/include/JSystem/JKernel/JKRHeap.h +++ b/include/JSystem/JKernel/JKRHeap.h @@ -16,6 +16,12 @@ extern u8 JKRValue_DEBUGFILL_DELETE; extern s32 fillcheck_dispcount; extern bool data_8074A8D0_debug; +#if BIT_64 +#define MEM_BLOCK_SIZE 0x20 +#else +#define MEM_BLOCK_SIZE 0x10 +#endif + /** * @ingroup jsystem-jkernel * diff --git a/include/JSystem/JMath/JMath.h b/include/JSystem/JMath/JMath.h index ab0faee049..1bd1322063 100644 --- a/include/JSystem/JMath/JMath.h +++ b/include/JSystem/JMath/JMath.h @@ -1,9 +1,16 @@ #ifndef JMATH_H #define JMATH_H -#include +#include "dolphin/mtx.h" #include +typedef f32 Mtx33[3][3]; +typedef f32 Mtx23[2][3]; +typedef f32 (*Mtx3P)[3]; +typedef f32 (*MtxP)[4]; +typedef const f32 (*CMtxP)[4]; +typedef f32 QuaternionP[4]; + void JMAMTXApplyScale(const Mtx, Mtx, f32, f32, f32); void JMAEulerToQuat(s16 param_0, s16 param_1, s16 param_2, Quaternion* param_3); void JMAQuatLerp(const Quaternion*, const Quaternion*, f32, Quaternion*); @@ -14,18 +21,24 @@ void JMAVECScaleAdd(__REGISTER const Vec* vec1, __REGISTER const Vec* vec2, __RE inline int JMAAbs(int value) { #ifdef __MWERKS__ return __abs(value); +#else + return abs(value); #endif } inline f32 JMAAbs(f32 x) { #ifdef __MWERKS__ return __fabsf(x); +#else + return fabsf(x); #endif } inline f32 JMAFastReciprocal(f32 value) { #ifdef __MWERKS__ return __fres(value); +#else + return 1.0f / value; #endif } @@ -40,6 +53,8 @@ inline float __frsqrtes(__REGISTER double f) { // clang-format on return out; +#else + return 1.0f / sqrtf(f); #endif } @@ -54,6 +69,8 @@ inline f32 JMAFastSqrt(__REGISTER const f32 input) { } else { return input; } +#else + return sqrt(input); #endif } @@ -87,6 +104,15 @@ inline f32 JMAHermiteInterpolation(__REGISTER f32 p1, __REGISTER f32 p2, __REGIS } // clang-format on return ff25; +#else + f32 t = (p1 - p2) / (p5 - p2); + f32 t2 = t * t; + f32 t3 = t2 * t; + f32 h1 = 2.0f * t3 - 3.0f * t2 + 1.0f; + f32 h2 = -2.0f * t3 + 3.0f * t2; + f32 h3 = t3 - 2.0f * t2 + t; + f32 h4 = t3 - t2; + return h1 * p4 + h2 * p7 + h3 * (p3 - p4) + h4 * (p6 - p3); #endif } @@ -115,6 +141,12 @@ inline void gekko_ps_copy3(__REGISTER void* dst, __REGISTER const void* src) { psq_st src0, 0(dst), 0, 0 stfs src1, 8(dst) }; +#else + f32* fsrc = (f32*)src; + f32* fdst = (f32*)dst; + fdst[0] = fsrc[0]; + fdst[1] = fsrc[1]; + fdst[2] = fsrc[2]; #endif } @@ -131,6 +163,15 @@ inline void gekko_ps_copy6(__REGISTER void* dst, __REGISTER const void* src) { psq_st src1, 8(dst), 0, 0 psq_st src2, 16(dst), 0, 0 }; +#else + f32* fsrc = (f32*)src; + f32* fdst = (f32*)dst; + fdst[0] = fsrc[0]; + fdst[1] = fsrc[1]; + fdst[2] = fsrc[2]; + fdst[3] = fsrc[3]; + fdst[4] = fsrc[4]; + fdst[5] = fsrc[5]; #endif } @@ -156,6 +197,12 @@ inline void gekko_ps_copy12(__REGISTER void* dst, __REGISTER const void* src) { psq_st src4, 32(dst), 0, 0 psq_st src5, 40(dst), 0, 0 }; +#else + f32* fsrc = (f32*)src; + f32* fdst = (f32*)dst; + for (int i = 0; i < 12; i++) { + fdst[i] = fsrc[i]; + } #endif } @@ -187,13 +234,19 @@ inline void gekko_ps_copy16(__REGISTER void* dst, __REGISTER const void* src) { psq_st src6, 48(dst), 0, 0 psq_st src7, 56(dst), 0, 0 }; +#else + f32* fsrc = (f32*)src; + f32* fdst = (f32*)dst; + for (int i = 0; i < 16; i++) { + fdst[i] = fsrc[i]; + } #endif } }; // namespace JMath namespace JMathInlineVEC { - inline void C_VECAdd(__REGISTER const Vec* a, __REGISTER const Vec* b, __REGISTER Vec* ab) { +inline void C_VECAdd(__REGISTER const Vec* a, __REGISTER const Vec* b, __REGISTER Vec* ab) { #ifdef __MWERKS__ __REGISTER f32 axy; __REGISTER f32 bxy; @@ -211,17 +264,21 @@ namespace JMathInlineVEC { ps_add sumz, az, bz psq_st sumz, 8(ab), 1, 0 } + #else + ab->x = a->x + b->x; + ab->y = a->y + b->y; + ab->z = a->z + b->z; #endif - } +} - inline void C_VECSubtract(__REGISTER const Vec* a, __REGISTER const Vec* b, __REGISTER Vec* ab) { - #ifdef __MWERKS__ - __REGISTER f32 axy; - __REGISTER f32 bxy; - __REGISTER f32 az; - __REGISTER f32 subz; - __REGISTER f32 bz; - asm { +inline void C_VECSubtract(__REGISTER const Vec* a, __REGISTER const Vec* b, __REGISTER Vec* ab) { +#ifdef __MWERKS__ + __REGISTER f32 axy; + __REGISTER f32 bxy; + __REGISTER f32 az; + __REGISTER f32 subz; + __REGISTER f32 bz; + asm { psq_l axy, 0(a), 0, 0 psq_l bxy, 0(b), 0, 0 ps_sub bxy, axy, bxy @@ -230,35 +287,41 @@ namespace JMathInlineVEC { psq_l bz, 8(b), 1, 0 ps_sub subz, az, bz psq_st subz, 8(ab), 1, 0 - } - #endif } +#else + ab->x = a->x - b->x; + ab->y = a->y - b->y; + ab->z = a->z - b->z; +#endif +} - inline f32 C_VECSquareMag(__REGISTER const Vec* v) { - #ifdef __MWERKS__ - __REGISTER f32 x_y; - __REGISTER f32 z; - __REGISTER f32 res; - - asm { +inline f32 C_VECSquareMag(__REGISTER const Vec* v) { +#ifdef __MWERKS__ + __REGISTER f32 x_y; + __REGISTER f32 z; + __REGISTER f32 res; + + asm { psq_l x_y, 0(v), 0, 0 ps_mul x_y, x_y, x_y lfs z, 8(v) ps_madd res, z, z, x_y ps_sum0 res, res, x_y, x_y - } - return res; - #endif } + return res; +#else + return (v->x * v->x) + (v->y * v->y) + (v->z * v->z); +#endif +} - inline f32 C_VECDotProduct(__REGISTER const Vec *a, __REGISTER const Vec *b) { - #ifdef __MWERKS__ - __REGISTER f32 res; - __REGISTER f32 thisyz; - __REGISTER f32 otheryz; - __REGISTER f32 otherxy; - __REGISTER f32 thisxy; - asm { +inline f32 C_VECDotProduct(__REGISTER const Vec* a, __REGISTER const Vec* b) { +#ifdef __MWERKS__ + __REGISTER f32 res; + __REGISTER f32 thisyz; + __REGISTER f32 otheryz; + __REGISTER f32 otherxy; + __REGISTER f32 thisxy; + asm { psq_l thisyz, 4(a), 0, 0 psq_l otheryz, 4(b), 0, 0 ps_mul thisyz, thisyz, otheryz @@ -266,13 +329,15 @@ namespace JMathInlineVEC { psq_l otherxy, 0(b), 0, 0 ps_madd otheryz, thisxy, otherxy, thisyz ps_sum0 res, otheryz, thisyz, thisyz - }; - return res; - #endif - } -}; + }; + return res; +#else + return (a->x * b->x) + (a->y * b->y) + (a->z * b->z); +#endif +} +}; // namespace JMathInlineVEC -template +template inline T JMAMax(T param_0, T param_1) { T ret; if (param_0 > param_1) { diff --git a/include/JSystem/JMessage/JMessage.h b/include/JSystem/JMessage/JMessage.h index a097187998..b4144ddf00 100644 --- a/include/JSystem/JMessage/JMessage.h +++ b/include/JSystem/JMessage/JMessage.h @@ -35,7 +35,12 @@ typedef struct str1_entry_t { typedef struct str1_section_t { /* 0x00 */ bmg_section_t header; // section header +#ifdef _MSVC_LANG + str1_entry_t* __get_entries() const { return (str1_entry_t*)(this + 1); } + __declspec(property(get = __get_entries)) str1_entry_t* entries; +#else /* 0x08 */ str1_entry_t entries[0]; +#endif } str1_section_t; #endif /* JMESSAGE_H */ diff --git a/include/JSystem/JParticle/JPABaseShape.h b/include/JSystem/JParticle/JPABaseShape.h index 35dcbb83ad..d02ac150bc 100644 --- a/include/JSystem/JParticle/JPABaseShape.h +++ b/include/JSystem/JParticle/JPABaseShape.h @@ -3,7 +3,7 @@ #include -class JPAEmitterWorkData; +struct JPAEmitterWorkData; class JPABaseParticle; class JKRHeap; diff --git a/include/JSystem/JParticle/JPAChildShape.h b/include/JSystem/JParticle/JPAChildShape.h index 9cfc484460..ff22d2d69e 100644 --- a/include/JSystem/JParticle/JPAChildShape.h +++ b/include/JSystem/JParticle/JPAChildShape.h @@ -3,7 +3,7 @@ #include -class JPAEmitterWorkData; +struct JPAEmitterWorkData; class JPABaseParticle; /** diff --git a/include/JSystem/JParticle/JPADynamicsBlock.h b/include/JSystem/JParticle/JPADynamicsBlock.h index a27922913e..fa3e9012b3 100644 --- a/include/JSystem/JParticle/JPADynamicsBlock.h +++ b/include/JSystem/JParticle/JPADynamicsBlock.h @@ -5,7 +5,7 @@ #include -class JPAEmitterWorkData; +struct JPAEmitterWorkData; /** * @ingroup jsystem-jparticle diff --git a/include/JSystem/JParticle/JPAExTexShape.h b/include/JSystem/JParticle/JPAExTexShape.h index 43175517ec..610a516290 100644 --- a/include/JSystem/JParticle/JPAExTexShape.h +++ b/include/JSystem/JParticle/JPAExTexShape.h @@ -3,7 +3,7 @@ #include -class JPAEmitterWorkData; +struct JPAEmitterWorkData; /** * @ingroup jsystem-jparticle diff --git a/include/JSystem/JParticle/JPAExtraShape.h b/include/JSystem/JParticle/JPAExtraShape.h index 9e9f315ff5..613413711c 100644 --- a/include/JSystem/JParticle/JPAExtraShape.h +++ b/include/JSystem/JParticle/JPAExtraShape.h @@ -3,7 +3,7 @@ #include -class JPAEmitterWorkData; +struct JPAEmitterWorkData; class JPABaseParticle; /** diff --git a/include/JSystem/JParticle/JPAFieldBlock.h b/include/JSystem/JParticle/JPAFieldBlock.h index 56a2de1d15..59186439ab 100644 --- a/include/JSystem/JParticle/JPAFieldBlock.h +++ b/include/JSystem/JParticle/JPAFieldBlock.h @@ -5,7 +5,7 @@ #include class JKRHeap; -class JPAEmitterWorkData; +struct JPAEmitterWorkData; class JPABaseParticle; class JPAFieldBlock; diff --git a/include/JSystem/JParticle/JPAResource.h b/include/JSystem/JParticle/JPAResource.h index f07868208d..2d9aec49ef 100644 --- a/include/JSystem/JParticle/JPAResource.h +++ b/include/JSystem/JParticle/JPAResource.h @@ -4,7 +4,7 @@ #include class JKRHeap; -class JPAEmitterWorkData; +struct JPAEmitterWorkData; class JPABaseEmitter; class JPABaseParticle; diff --git a/include/JSystem/JStudio/JStudio/functionvalue.h b/include/JSystem/JStudio/JStudio/functionvalue.h index 3684a66da2..e1d4cbcc1c 100644 --- a/include/JSystem/JStudio/JStudio/functionvalue.h +++ b/include/JSystem/JStudio/JStudio/functionvalue.h @@ -333,7 +333,11 @@ public: return r1.pf_ == r2.pf_; } +#ifdef __MWERKS__ f32 operator*() { +#else + f32 operator*() const { +#endif // this guard is required - removing it breaks float regalloc in std::upper_bound #if DEBUG JUT_ASSERT(947, pf_!=NULL); @@ -444,7 +448,11 @@ public: return r1.pf_ == r2.pf_; } +#ifdef __MWERKS__ f32 operator*() { +#else + f32 operator*() const { +#endif #if DEBUG JUT_ASSERT(1098, pf_!=NULL); #endif diff --git a/include/JSystem/JStudio/JStudio_JPreviewer/control.h b/include/JSystem/JStudio/JStudio_JPreviewer/control.h index 5d19028ca9..0957620168 100644 --- a/include/JSystem/JStudio/JStudio_JPreviewer/control.h +++ b/include/JSystem/JStudio/JStudio_JPreviewer/control.h @@ -8,7 +8,7 @@ class J2DOrthoGraph; class JUTFont; -class JUTGamePad; +struct JUTGamePad; namespace JStudio { class TControl; diff --git a/include/JSystem/JSupport/JSUOutputStream.h b/include/JSystem/JSupport/JSUOutputStream.h index b44ec084b0..570ed1e9db 100644 --- a/include/JSystem/JSupport/JSUOutputStream.h +++ b/include/JSystem/JSupport/JSUOutputStream.h @@ -18,6 +18,13 @@ public: s32 write(const void*, s32); void write(const char*); +#if defined(_MSVC_LANG) && defined(_WIN64) + JSUOutputStream& operator<<(uintptr_t param_0) { + write(¶m_0, sizeof(uintptr_t)); + return *this; + } +#endif + JSUOutputStream& operator<<(u32 param_0) { write(¶m_0, sizeof(u32)); return *this; diff --git a/include/JSystem/JUtility/JUTFont.h b/include/JSystem/JUtility/JUTFont.h index 12cf8f6772..dcccf68dde 100644 --- a/include/JSystem/JUtility/JUTFont.h +++ b/include/JSystem/JUtility/JUTFont.h @@ -3,6 +3,7 @@ #include "JSystem/JUtility/TColor.h" #include +#include "dusk/endian.h" /** * @ingroup jsystem-jutility @@ -10,54 +11,59 @@ */ struct ResFONT { struct INF1 { - /* 0x00 */ u32 magic; - /* 0x04 */ u32 size; - /* 0x08 */ u16 fontType; - /* 0x0A */ u16 ascent; - /* 0x0C */ u16 descent; - /* 0x0E */ u16 width; - /* 0x10 */ u16 leading; - /* 0x12 */ u16 defaultCode; + /* 0x00 */ BE(u32) magic; + /* 0x04 */ BE(u32) size; + /* 0x08 */ BE(u16) fontType; + /* 0x0A */ BE(u16) ascent; + /* 0x0C */ BE(u16) descent; + /* 0x0E */ BE(u16) width; + /* 0x10 */ BE(u16) leading; + /* 0x12 */ BE(u16) defaultCode; }; struct WID1 { - /* 0x00 */ u32 magic; - /* 0x04 */ u32 size; - /* 0x08 */ u16 startCode; - /* 0x0A */ u16 endCode; + /* 0x00 */ BE(u32) magic; + /* 0x04 */ BE(u32) size; + /* 0x08 */ BE(u16) startCode; + /* 0x0A */ BE(u16) endCode; /* 0x0C */ u8 mChunkNum[4]; }; struct MAP1 { - /* 0x00 */ u32 magic; - /* 0x04 */ u32 size; - /* 0x08 */ u16 mappingMethod; - /* 0x0A */ u16 startCode; - /* 0x0C */ u16 endCode; - /* 0x0E */ u16 numEntries; - /* 0x10 */ u16 mLeading; + /* 0x00 */ BE(u32) magic; + /* 0x04 */ BE(u32) size; + /* 0x08 */ BE(u16) mappingMethod; + /* 0x0A */ BE(u16) startCode; + /* 0x0C */ BE(u16) endCode; + /* 0x0E */ BE(u16) numEntries; + /* 0x10 */ BE(u16) mLeading; }; struct GLY1 { - /* 0x00 */ u32 magic; - /* 0x04 */ u32 size; - /* 0x08 */ u16 startCode; - /* 0x0A */ u16 endCode; - /* 0x0C */ u16 cellWidth; - /* 0x0E */ u16 cellHeight; - /* 0x10 */ u32 textureSize; - /* 0x14 */ u16 textureFormat; - /* 0x16 */ u16 numRows; - /* 0x18 */ u16 numColumns; - /* 0x1A */ u16 textureWidth; - /* 0x1C */ u16 textureHeight; - /* 0x1E */ u16 padding; + /* 0x00 */ u32 magic; // Don't mark BE (seemingly only written by code) + /* 0x04 */ BE(u32) size; + /* 0x08 */ BE(u16) startCode; + /* 0x0A */ BE(u16) endCode; + /* 0x0C */ BE(u16) cellWidth; + /* 0x0E */ BE(u16) cellHeight; + /* 0x10 */ BE(u32) textureSize; + /* 0x14 */ BE(u16) textureFormat; + /* 0x16 */ BE(u16) numRows; + /* 0x18 */ BE(u16) numColumns; + /* 0x1A */ BE(u16) textureWidth; + /* 0x1C */ BE(u16) textureHeight; + /* 0x1E */ BE(u16) padding; +#ifdef _MSVC_LANG + u8* __get_data() const { return (u8*)(this + 1); } + __declspec(property(get = __get_data)) u8* data; +#else /* 0x20 */ u8 data[]; +#endif }; - /* 0x00 */ u64 magic; - /* 0x08 */ u32 filesize; - /* 0x0C */ u32 numBlocks; + /* 0x00 */ BE(u64) magic; + /* 0x08 */ BE(u32) filesize; + /* 0x0C */ BE(u32) numBlocks; /* 0x10 */ u8 padding[0x10]; /* 0x20 */ u8 data[]; }; diff --git a/include/JSystem/JUtility/JUTPalette.h b/include/JSystem/JUtility/JUTPalette.h index 0053913630..95de8a995a 100644 --- a/include/JSystem/JUtility/JUTPalette.h +++ b/include/JSystem/JUtility/JUTPalette.h @@ -3,6 +3,8 @@ #include +#include "dusk/endian.h" + enum JUTTransparency { UNK0, UNK1 }; /** @@ -12,7 +14,7 @@ enum JUTTransparency { UNK0, UNK1 }; struct ResTLUT { u8 format; u8 transparency; - u16 numColors; + BE(u16) numColors; }; /** diff --git a/include/JSystem/JUtility/JUTResFont.h b/include/JSystem/JUtility/JUTResFont.h index 473a8e8f99..7b6ec796da 100644 --- a/include/JSystem/JUtility/JUTResFont.h +++ b/include/JSystem/JUtility/JUTResFont.h @@ -13,8 +13,8 @@ typedef bool (*IsLeadByte_func)(int); */ struct BlockHeader { const BlockHeader* getNext() const { return reinterpret_cast(reinterpret_cast(this) + size); } - u32 magic; - u32 size; + BE(u32) magic; + BE(u32) size; }; /** @@ -50,7 +50,7 @@ public: void countBlock(); void loadFont(int, _GXTexMapID, JUTFont::TWidth*); int getFontCode(int) const; - int convertSjis(int, u16*) const; + int convertSjis(int, BE(u16)*) const; inline void delete_and_initialize() { deleteMemBlocks_ResFont(); diff --git a/include/JSystem/JUtility/JUTTexture.h b/include/JSystem/JUtility/JUTTexture.h index b5965eb185..370129fcc8 100644 --- a/include/JSystem/JUtility/JUTTexture.h +++ b/include/JSystem/JUtility/JUTTexture.h @@ -3,6 +3,7 @@ #include #include +#include "dusk/endian.h" class JUTPalette; @@ -25,7 +26,7 @@ struct ResTIMG { /* 0x08 */ u8 indexTexture; /* 0x09 */ u8 colorFormat; /* 0x0A */ u16 numColors; - /* 0x0C */ uintptr_t paletteOffset; + /* 0x0C */ u32 paletteOffset; /* 0x10 */ u8 mipmapEnabled; /* 0x11 */ u8 doEdgeLOD; /* 0x12 */ u8 biasClamp; @@ -37,7 +38,7 @@ struct ResTIMG { /* 0x18 */ u8 mipmapCount; /* 0x19 */ u8 unknown; /* 0x1A */ s16 LODBias; - /* 0x1C */ uintptr_t imageOffset; + /* 0x1C */ u32 imageOffset; }; // Size: 0x20 /** @@ -71,8 +72,8 @@ public: const ResTIMG* getTexInfo() const { return mTexInfo; } s32 getFormat() const { return mTexInfo->format; } s32 getTransparency() const { return mTexInfo->alphaEnabled; } - s32 getWidth() const { return mTexInfo->width; } - s32 getHeight() const { return mTexInfo->height; } + s32 getWidth() const { return RES_U16(mTexInfo->width); } + s32 getHeight() const { return RES_U16(mTexInfo->height); } void setCaptureFlag(bool flag) { mFlags &= 2 | flag; } bool getCaptureFlag() const { return mFlags & 1; } bool getEmbPaletteDelFlag() const { return mFlags & 2; } diff --git a/include/SSystem/SComponent/c_m3d.h b/include/SSystem/SComponent/c_m3d.h index 12303b9a65..58f0e28753 100644 --- a/include/SSystem/SComponent/c_m3d.h +++ b/include/SSystem/SComponent/c_m3d.h @@ -12,7 +12,7 @@ class cM3dGPla; class cM3dGSph; class cM3dGTri; class csXyz; -class cXyz; +struct cXyz; struct cM3d_Range { /* 0x0 */ f32 mMin; diff --git a/include/SSystem/SComponent/c_xyz.h b/include/SSystem/SComponent/c_xyz.h index 7876d12c3c..fb4f980dcb 100644 --- a/include/SSystem/SComponent/c_xyz.h +++ b/include/SSystem/SComponent/c_xyz.h @@ -4,6 +4,10 @@ #include #include +#ifdef _MSVC_LANG +#define M_PI 3.14159265358979323846f +#endif + struct cXyz : Vec { static const cXyz Zero; static const cXyz BaseX; diff --git a/include/Z2AudioLib/Z2LinkMgr.h b/include/Z2AudioLib/Z2LinkMgr.h index 7432a2bc82..cf05ed14d9 100644 --- a/include/Z2AudioLib/Z2LinkMgr.h +++ b/include/Z2AudioLib/Z2LinkMgr.h @@ -61,7 +61,7 @@ public: static Z2CreatureLink* getLink() { return mLinkPtr; } friend class Z2LinkSoundStarter; - friend class Z2RideSoundStarter; + friend struct Z2RideSoundStarter; private: /* 0x90 Z2LinkSoundStarter */ diff --git a/include/Z2AudioLib/Z2SoundObject.h b/include/Z2AudioLib/Z2SoundObject.h index 46256aeda7..ca4b69a520 100644 --- a/include/Z2AudioLib/Z2SoundObject.h +++ b/include/Z2AudioLib/Z2SoundObject.h @@ -4,7 +4,7 @@ #include "Z2AudioLib/Z2SoundHandles.h" #include "JSystem/JAudio2/JAUSoundAnimator.h" -class Z2SoundStarter; +struct Z2SoundStarter; class Z2SoundObjBase : public Z2SoundHandles #if DEBUG diff --git a/include/Z2AudioLib/Z2StatusMgr.h b/include/Z2AudioLib/Z2StatusMgr.h index 615374f2be..762772c746 100644 --- a/include/Z2AudioLib/Z2StatusMgr.h +++ b/include/Z2AudioLib/Z2StatusMgr.h @@ -1,6 +1,7 @@ #ifndef Z2STATUSMGR_H #define Z2STATUSMGR_H +#include #include "JSystem/JAudio2/JASGadget.h" #include diff --git a/include/d/actor/d_a_b_ds.h b/include/d/actor/d_a_b_ds.h index d7dd03a90b..ee737a955a 100644 --- a/include/d/actor/d_a_b_ds.h +++ b/include/d/actor/d_a_b_ds.h @@ -332,8 +332,10 @@ private: /* 0x2EDC */ dMsgFlow_c mMsgFlow; }; +#ifdef __MWERKS__ cXyz daB_DS_c::getHandPosR() { return mHandPos[1]; } cXyz daB_DS_c::getHandPosL() { return mHandPos[0]; } +#endif STATIC_ASSERT(sizeof(daB_DS_c) == 0x2F28); diff --git a/include/d/actor/d_a_b_yo.h b/include/d/actor/d_a_b_yo.h index b4cef6d648..a133d364d6 100644 --- a/include/d/actor/d_a_b_yo.h +++ b/include/d/actor/d_a_b_yo.h @@ -8,7 +8,7 @@ #include "d/d_bg_s_acch.h" class dBgW; -class msg_class; +struct msg_class; /** * @ingroup actors-enemies diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index 6ea1e22a94..471ed5a72a 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -626,7 +626,8 @@ public: daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, int i_faceMotionStepNum, daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, - int i_motionStepNum, daNpcT_evtData_c const* i_evtData, char** i_arcNames) : + int i_motionStepNum, daNpcT_evtData_c const* i_evtData, char** i_arcNames) + : mpFaceMotionAnmData(i_faceMotionAnmData), mpMotionAnmData(i_motionAnmData), mpEvtData(i_evtData), diff --git a/include/d/actor/d_a_npc_aru.h b/include/d/actor/d_a_npc_aru.h index 8259741d13..84496ea6d6 100644 --- a/include/d/actor/d_a_npc_aru.h +++ b/include/d/actor/d_a_npc_aru.h @@ -149,8 +149,7 @@ public: int i_faceMotionStepNum, daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum, - daNpcT_evtData_c const* i_evtData, - char** i_arcNames) + daNpcT_evtData_c const* i_evtData, char** i_arcNames) : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, i_arcNames) { diff --git a/include/d/actor/d_a_npc_besu.h b/include/d/actor/d_a_npc_besu.h index e09e2faa7d..c4b1e3cf91 100644 --- a/include/d/actor/d_a_npc_besu.h +++ b/include/d/actor/d_a_npc_besu.h @@ -112,8 +112,7 @@ public: int i_faceMotionStepNum, daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum, - daNpcT_evtData_c const* i_evtData, - char** i_arcNames) + daNpcT_evtData_c const* i_evtData, char** i_arcNames) : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, i_arcNames) { diff --git a/include/d/actor/d_a_npc_bou.h b/include/d/actor/d_a_npc_bou.h index 9a1b460ae4..67c4403714 100644 --- a/include/d/actor/d_a_npc_bou.h +++ b/include/d/actor/d_a_npc_bou.h @@ -86,9 +86,10 @@ public: int talkwithJagar(void*); int talk(void*); daNpc_Bou_c(daNpcT_faceMotionAnmData_c const* param_1, daNpcT_motionAnmData_c const* param_2, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6, - daNpcT_evtData_c const* param_7, char** param_8) : + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6, + daNpcT_evtData_c const* param_7, char** param_8) + : daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8) {} diff --git a/include/d/actor/d_a_npc_clerka.h b/include/d/actor/d_a_npc_clerka.h index f1c683d74d..a20c12c001 100644 --- a/include/d/actor/d_a_npc_clerka.h +++ b/include/d/actor/d_a_npc_clerka.h @@ -95,13 +95,12 @@ public: int tend(void*); int talk(void*); int shop(void*); - daNpc_clerkA_c( - daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, - daNpcT_motionAnmData_c const* i_motionAnmData, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, - int i_faceMotionStepNum, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum, - daNpcT_evtData_c const* i_evtData, char** i_arcNames) + daNpc_clerkA_c(daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, + daNpcT_motionAnmData_c const* i_motionAnmData, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, + int i_faceMotionStepNum, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, + int i_motionStepNum, daNpcT_evtData_c const* i_evtData, char** i_arcNames) : dShopSystem_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, i_arcNames) {} diff --git a/include/d/actor/d_a_npc_clerkb.h b/include/d/actor/d_a_npc_clerkb.h index dfe3ee6eb3..f83ec949d4 100644 --- a/include/d/actor/d_a_npc_clerkb.h +++ b/include/d/actor/d_a_npc_clerkb.h @@ -108,13 +108,12 @@ public: int tend(void*); int talk(void*); int shop(void*); - daNpc_clerkB_c( - daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, - daNpcT_motionAnmData_c const* i_motionAnmData, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, - int i_faceMotionStepNum, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum, - daNpcT_evtData_c const* i_evtData, char** i_arcNames) + daNpc_clerkB_c(daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, + daNpcT_motionAnmData_c const* i_motionAnmData, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, + int i_faceMotionStepNum, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, + int i_motionStepNum, daNpcT_evtData_c const* i_evtData, char** i_arcNames) : dShopSystem_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, i_arcNames) {} diff --git a/include/d/actor/d_a_npc_taro.h b/include/d/actor/d_a_npc_taro.h index 7eaf3d42b3..8db2ec3270 100644 --- a/include/d/actor/d_a_npc_taro.h +++ b/include/d/actor/d_a_npc_taro.h @@ -121,13 +121,12 @@ public: int practice(void*); int nurse(void*); int talk(void*); - daNpc_Taro_c( - daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, - daNpcT_motionAnmData_c const* i_motionAnmData, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, - int i_faceMotionStepNum, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum, - daNpcT_evtData_c const* i_evtData, char** i_arcNames) + daNpc_Taro_c(daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, + daNpcT_motionAnmData_c const* i_motionAnmData, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, + int i_faceMotionStepNum, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, + int i_motionStepNum, daNpcT_evtData_c const* i_evtData, char** i_arcNames) : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, i_arcNames) { diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index ff79f9dd4f..b08714e23a 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -1087,7 +1087,8 @@ inline void dComIfG_ct() { g_dComIfG_gameInfo.ct(); } -int dComLbG_PhaseHandler(request_of_phase_process_class*, request_of_phase_process_fn*, void*); +int dComLbG_PhaseHandler(request_of_phase_process_class*, request_of_phase_process_fn*, + void*); BOOL dComIfG_resetToOpening(scene_class* scene); char* dComIfG_getRoomArcName(int roomNo); void* dComIfG_getStageRes(char const* i_resName); @@ -3920,7 +3921,8 @@ inline int dComIfGp_evmng_getMyStaffId(const char* i_staffname, fopAc_ac_c* i_ac return dComIfGp_getPEvtManager()->getMyStaffId(i_staffname, i_actor, i_tagId); } -inline int dComIfGp_evmng_getMyActIdx(int i_staffId, char** i_actions, int i_actionNum, BOOL param_3, BOOL param_4) { +inline int dComIfGp_evmng_getMyActIdx(int i_staffId, char** i_actions, int i_actionNum, + BOOL param_3, BOOL param_4) { return dComIfGp_getPEvtManager()->getMyActIdx(i_staffId, i_actions, i_actionNum, param_3, param_4); } diff --git a/include/d/d_event_data.h b/include/d/d_event_data.h index 17549363c1..22a835ec24 100644 --- a/include/d/d_event_data.h +++ b/include/d/d_event_data.h @@ -4,7 +4,7 @@ #include "global.h" #include "f_pc/f_pc_base.h" -class msg_class; +struct msg_class; struct event_binary_data_header { /* 0x00 */ u32 eventTop; // offset to Event chunk diff --git a/include/d/d_jcam_editor.h b/include/d/d_jcam_editor.h index 87f0c890b0..3662f1c956 100644 --- a/include/d/d_jcam_editor.h +++ b/include/d/d_jcam_editor.h @@ -6,7 +6,7 @@ #include "JSystem/JUtility/JUTResFont.h" #include "JSystem/JKernel/JKRExpHeap.h" -class JUTGamePad; +struct JUTGamePad; class dJcame_c { public: diff --git a/include/d/d_jpreviewer.h b/include/d/d_jpreviewer.h index b34880c1c0..9971fa6674 100644 --- a/include/d/d_jpreviewer.h +++ b/include/d/d_jpreviewer.h @@ -10,7 +10,7 @@ namespace JStudio { class J2DOrthoGraph; class JKRExpHeap; -class JUTGamePad; +struct JUTGamePad; class JUTResFont; class tParse_; diff --git a/include/d/d_kankyo.h b/include/d/d_kankyo.h index 277e6d6dbc..3c81f08d10 100644 --- a/include/d/d_kankyo.h +++ b/include/d/d_kankyo.h @@ -12,7 +12,7 @@ class JPABaseEmitter; class cBgS_PolyInfo; -class color_RGB_class; +struct color_RGB_class; struct LIGHT_INFLUENCE { /* 0x00 */ cXyz mPosition; @@ -148,12 +148,12 @@ struct LightStatus { }; // Size: 0xE8 class fopAc_ac_c; -class dKyd_lightSchejule; -class stage_palette_info_class; -class stage_pselect_info_class; -class stage_envr_info_class; -class stage_vrboxcol_info_class; -class stage_plight_info_class; +struct dKyd_lightSchejule; +struct stage_palette_info_class; +struct stage_pselect_info_class; +struct stage_envr_info_class; +struct stage_vrboxcol_info_class; +struct stage_plight_info_class; class kytag08_class; struct dKy_pol_arg_struct { diff --git a/include/d/d_kankyo_wether.h b/include/d/d_kankyo_wether.h index 14a8d00657..31aa1fd8e3 100644 --- a/include/d/d_kankyo_wether.h +++ b/include/d/d_kankyo_wether.h @@ -5,7 +5,7 @@ #include "SSystem/SComponent/c_sxyz.h" #include "SSystem/SComponent/c_xyz.h" -class WIND_INFLUENCE; +struct WIND_INFLUENCE; void dKyw_wether_draw(); void dKyw_wether_delete(); diff --git a/include/d/d_menu_fmap.h b/include/d/d_menu_fmap.h index 2b450aa577..a8c528ac9d 100644 --- a/include/d/d_menu_fmap.h +++ b/include/d/d_menu_fmap.h @@ -74,7 +74,12 @@ public: /* 0x0 */ char mStageName[8]; /* 0x8 */ u16 mAreaName; /* 0xA */ u8 mCount; +#ifdef _MSVC_LANG + u8* __get_mRoomNos() const { return (u8*)(this + 1); } + __declspec(property(get = __get_mRoomNos)) u8* mRoomNos; +#else /* 0xB */ u8 mRoomNos[0]; +#endif }; /* 0x0 */ u8 mCount; diff --git a/include/d/d_msg_flow.h b/include/d/d_msg_flow.h index 89037d78cb..8f242f3eec 100644 --- a/include/d/d_msg_flow.h +++ b/include/d/d_msg_flow.h @@ -16,7 +16,7 @@ enum { }; class fopAc_ac_c; -class msg_class; +struct msg_class; // all mesg_flow_node structs members might be wrong struct mesg_flow_node { diff --git a/include/d/d_particle_name.h b/include/d/d_particle_name.h index 61a7c4d7e5..05c128edd7 100644 --- a/include/d/d_particle_name.h +++ b/include/d/d_particle_name.h @@ -1,7 +1,8 @@ #ifndef D_PARTICLE_D_PARTICLE_NAME_H #define D_PARTICLE_D_PARTICLE_NAME_H -#include +#include "dolphin/types.h" +#include // Room scenes use a bit to specify an ID is from a room particle pack, not the common particle pack #define dPa_RM(id) (0x8000 | (id)) diff --git a/include/d/d_shop_system.h b/include/d/d_shop_system.h index 0f4c6ae17b..02f76074dd 100644 --- a/include/d/d_shop_system.h +++ b/include/d/d_shop_system.h @@ -29,10 +29,11 @@ public: }; dShopSystem_c(daNpcT_faceMotionAnmData_c const* param_1, daNpcT_motionAnmData_c const* param_2, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6, daNpcT_evtData_c const* param_7, - char** param_8) : daNpcT_c(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8) { - OS_REPORT("|%06d:%x|dShopSystem_c -> コンストラクト\n", g_Counter.mCounter0, this); + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6, + daNpcT_evtData_c const* param_7, char** param_8) + : daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8) { + OS_REPORT("|%06d:%x|dShopSystem_c -> コンストラクト\n", g_Counter.mCounter0, this); initShopSystem(); } diff --git a/include/dolphin/mtx.h b/include/dolphin/_mtx.h similarity index 98% rename from include/dolphin/mtx.h rename to include/dolphin/_mtx.h index da308658ab..4201269dc8 100644 --- a/include/dolphin/mtx.h +++ b/include/dolphin/_mtx.h @@ -31,14 +31,6 @@ typedef f32 (*Mtx44Ptr)[4]; typedef f32 ROMtx[4][3]; typedef f32 (*ROMtxPtr)[4]; -// do these belong in the sdk? -typedef f32 Mtx33[3][3]; -typedef f32 Mtx23[2][3]; -typedef f32 (*Mtx3P)[3]; -typedef f32 (*MtxP)[4]; -typedef const f32 (*CMtxP)[4]; -typedef f32 QuaternionP[4]; - typedef struct { u32 numMtx; MtxPtr stackBase; diff --git a/include/dolphin/ar.h b/include/dolphin/ar.h index 0a5d781a8f..46f163aef9 100644 --- a/include/dolphin/ar.h +++ b/include/dolphin/ar.h @@ -10,7 +10,7 @@ extern "C" { #endif -typedef void (*ARQCallback)(u32 pointerToARQRequest); +typedef void (*ARQCallback)(uintptr_t pointerToARQRequest); struct ARQRequest { /* 0x00 */ struct ARQRequest *next; @@ -59,7 +59,7 @@ void ARClear(u32 flag); // ARQ void ARQInit(void); void ARQReset(void); -void ARQPostRequest(ARQRequest* request, u32 owner, u32 type, u32 priority, u32 source, u32 dest, u32 length, ARQCallback callback); +void ARQPostRequest(ARQRequest* request, u32 owner, u32 type, u32 priority, uintptr_t source, uintptr_t dest, u32 length, ARQCallback callback); void ARQRemoveRequest(ARQRequest* request); void ARQRemoveOwnerRequest(u32 owner); void ARQFlushQueue(void); diff --git a/include/dolphin/gx/GXGeometry.h b/include/dolphin/gx/GXGeometry.h index f2e9965ad0..3b49a3ff37 100644 --- a/include/dolphin/gx/GXGeometry.h +++ b/include/dolphin/gx/GXGeometry.h @@ -28,6 +28,10 @@ static inline void GXSetTexCoordGen(GXTexCoordID dst_coord, GXTexGenType func, G void GXBegin(GXPrimitive type, GXVtxFmt vtxfmt, u16 nverts); +#ifndef TARGET_PC +// On GameCube, GXEnd is a no-op (hardware reads FIFO directly). +// On PC, Aurora provides an extern GXEnd() that drains the software FIFO +// (declared in extern/aurora/include/dolphin/gx/GXVert.h). static inline void GXEnd(void) { #if DEBUG extern GXBool __GXinBegin; @@ -38,6 +42,7 @@ static inline void GXEnd(void) { __GXinBegin = GX_FALSE; #endif } +#endif void GXSetLineWidth(u8 width, GXTexOffset texOffsets); void GXSetPointSize(u8 pointSize, GXTexOffset texOffsets); diff --git a/include/dolphin/gx/GXStruct.h b/include/dolphin/gx/GXStruct.h index faba188d24..d460f76d55 100644 --- a/include/dolphin/gx/GXStruct.h +++ b/include/dolphin/gx/GXStruct.h @@ -36,7 +36,11 @@ typedef struct _GXColorS10 { } GXColorS10; typedef struct _GXTexObj { +#ifdef TARGET_PC + u32 dummy[22]; // Aurora's GXTexObj_ contains std::shared_ptr + many fields (~80 bytes) +#else u32 dummy[8]; +#endif } GXTexObj; typedef struct _GXLightObj { @@ -48,7 +52,11 @@ typedef struct _GXTexRegion { } GXTexRegion; typedef struct _GXTlutObj { +#ifdef TARGET_PC + u32 dummy[4]; // Aurora's GXTlutObj_ contains std::shared_ptr (8+ bytes) +#else u32 dummy[3]; +#endif } GXTlutObj; typedef struct _GXTlutRegion { diff --git a/include/dolphin/gx/GXVert.h b/include/dolphin/gx/GXVert.h index c508e164bb..ddf01179bf 100644 --- a/include/dolphin/gx/GXVert.h +++ b/include/dolphin/gx/GXVert.h @@ -3,6 +3,46 @@ #ifdef __REVOLUTION_SDK__ #include +#elif defined(TARGET_PC) +// On PC, include Aurora's GXVert for GXPosition/GXNormal/GXColor/GXTexCoord/GXEnd +// (extern functions implemented in Aurora's GXVert.cpp, stream-based vertex buffers) +#include "../../../extern/aurora/include/dolphin/gx/GXVert.h" + +// Aurora's GXVert.h does not provide GXCmd, GXParam, GXMatrixIndex, or a valid +// GXWGFifo target. J3D code uses these for low-level display list writes. +// We declare them as extern (implemented in stubs.cpp) and provide a dummy +// GXWGFifo that writes into a throw-away buffer so direct FIFO writes don't crash. + +// Replace Aurora's GXWGFifo macro (pointing to 0xCC008000) with an extern variable +#undef GXWGFifo +#ifdef __cplusplus +extern "C" { +#endif + +// PPCWGPipe is already typedef'd by Aurora's GXVert.h above. +// Dummy FIFO sink: direct GXWGFifo writes in J3DFifo.h land here harmlessly. +extern volatile PPCWGPipe GXWGFifo; + +void GXCmd1u8(const u8 x); +void GXCmd1u16(const u16 x); +void GXCmd1u32(const u32 x); + +void GXParam1u8(const u8 x); +void GXParam1u16(const u16 x); +void GXParam1u32(const u32 x); +void GXParam1s8(const s8 x); +void GXParam1s16(const s16 x); +void GXParam1s32(const s32 x); +void GXParam1f32(const f32 x); +void GXParam3f32(const f32 x, const f32 y, const f32 z); +void GXParam4f32(const f32 x, const f32 y, const f32 z, const f32 w); + +void GXMatrixIndex1u8(const u8 x); + +#ifdef __cplusplus +} +#endif + #else #include #include diff --git a/include/dolphin/os.h b/include/dolphin/os.h index 07eb305adb..16f1254104 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -1,17 +1,15 @@ #ifndef _DOLPHIN_OS_H_ #define _DOLPHIN_OS_H_ -#ifdef __MWERKS__ #include -#else -#include -#endif #ifdef __REVOLUTION_SDK__ #include #else + #include #include + void OSReportInit(void); void OSSwitchFiberEx(u32, u32, u32, u32, u32, u32); void OSVAttention(const char* fmt, va_list args); @@ -45,7 +43,9 @@ typedef u32 OSTick; #include #include #include +#ifdef __MWERKS__ #include +#endif #include #include #include @@ -54,6 +54,18 @@ typedef u32 OSTick; // private macro, maybe shouldn't be defined here? #define OFFSET(addr, align) (((u32)(addr) & ((align)-1))) +#ifndef __MWERKS__ +typedef struct { + BOOL valid; + u32 restartCode; + u32 bootDol; + void* regionStart; + void* regionEnd; + int argsUseDefault; + void* argsAddr; +} OSExecParams; +#endif + #define DOLPHIN_ALIGNMENT 32 // Upper words of the masks, since UIMM is only 16 bits @@ -80,9 +92,9 @@ OSThread* __gUnkThread1 AT_ADDRESS(OS_BASE_CACHED | 0x00D8); int __gUnknown800030C0[2] AT_ADDRESS(OS_BASE_CACHED | 0x30C0); u8 __gUnknown800030E3 AT_ADDRESS(OS_BASE_CACHED | 0x30E3); #else -#define __OSBusClock (*(u32 *)(OS_BASE_CACHED | 0x00F8)) -#define __OSCoreClock (*(u32 *)(OS_BASE_CACHED | 0x00FC)) -#endif +#define __OSBusClock 486000000 +#define __OSCoreClock (486000000 / 4) +#endif // __MWERKS__ #define OS_BUS_CLOCK __OSBusClock #define OS_CORE_CLOCK __OSCoreClock @@ -210,7 +222,6 @@ DECL_WEAK void OSReportDisable(void); DECL_WEAK void OSReportEnable(void); DECL_WEAK void OSReportForceEnableOff(void); DECL_WEAK void OSReportForceEnableOn(void); -DECL_WEAK void OSVReport(const char* format, va_list list); #if DEBUG #define OS_REPORT(...) OSReport(__VA_ARGS__) @@ -233,6 +244,29 @@ extern u8 __OSReport_enable; #define OSRoundUp32B(x) (((u32)(x) + 32 - 1) & ~(32 - 1)) #define OSRoundDown32B(x) (((u32)(x)) & ~(32 - 1)) +#ifdef TARGET_PC + +static inline void* OSPhysicalToCached(u32 paddr) { + return reinterpret_cast(static_cast(paddr)); +} +static inline void* OSPhysicalToUncached(u32 paddr) { + return reinterpret_cast(static_cast(paddr)); +} +static inline u32 OSCachedToPhysical(void* caddr) { + return static_cast(reinterpret_cast(caddr)); +} +static inline u32 OSUncachedToPhysical(void* ucaddr) { + return static_cast(reinterpret_cast(ucaddr)); +} +static inline void* OSCachedToUncached(void* caddr) { + return caddr; +} +static inline void* OSUncachedToCached(void* ucaddr) { + return ucaddr; +} + +#else // non-TARGET_PC + void* OSPhysicalToCached(u32 paddr); void* OSPhysicalToUncached(u32 paddr); u32 OSCachedToPhysical(void* caddr); @@ -240,7 +274,9 @@ u32 OSUncachedToPhysical(void* ucaddr); void* OSCachedToUncached(void* caddr); void* OSUncachedToCached(void* ucaddr); -#if !DEBUG +#endif // TARGET_PC + +#if !DEBUG && !defined(TARGET_PC) #define OSPhysicalToCached(paddr) ((void*) ((u32)(OS_BASE_CACHED + (u32)(paddr)))) #define OSPhysicalToUncached(paddr) ((void*) ((u32)(OS_BASE_UNCACHED + (u32)(paddr)))) #define OSCachedToPhysical(caddr) ((u32) ((u32)(caddr) - OS_BASE_CACHED)) @@ -257,6 +293,10 @@ extern OSTime __OSStartTime; extern int __OSInIPL; // helper for assert line numbers in different revisions +#ifndef SDK_REVISION +#define SDK_REVISION 0 +#endif + #if SDK_REVISION < 1 #define LINE(l0, l1, l2) (l0) #elif SDK_REVISION < 2 @@ -275,7 +315,6 @@ extern int __OSInIPL; // This is dumb but we dont have a Metrowerks way to do variadic macros in the macro to make this done in a not scrubby way. #define ASSERTMSG1LINE(line, cond, msg, arg1) \ ((cond) || (OSPanic(__FILE__, line, msg, arg1), 0)) - #define ASSERTMSG2LINE(line, cond, msg, arg1, arg2) \ ((cond) || (OSPanic(__FILE__, line, msg, arg1, arg2), 0)) @@ -289,7 +328,6 @@ extern int __OSInIPL; #define ASSERTMSG2LINE(line, cond, msg, arg1, arg2) (void)0 #define ASSERTMSGLINEV(line, cond, ...) (void)0 #endif - #define ASSERT(cond) ASSERTLINE(__LINE__, cond) inline s16 __OSf32tos16(__REGISTER f32 inF) { @@ -357,5 +395,5 @@ static inline void OSInitFastCast(void) { } #endif -#endif -#endif +#endif // __REVOLUTION_SDK__ +#endif // _DOLPHIN_OS_H_ diff --git a/include/dolphin/types.h b/include/dolphin/types.h index b957324094..e8c3df7861 100644 --- a/include/dolphin/types.h +++ b/include/dolphin/types.h @@ -4,12 +4,24 @@ #ifdef __REVOLUTION_SDK__ #include #else + +#if _WIN64 || __LP64__ +#define BIT_64 1 +#else +#define BIT_64 0 +#endif + typedef signed char s8; typedef unsigned char u8; typedef signed short int s16; typedef unsigned short int u16; +#if TARGET_PC +typedef signed int s32; +typedef unsigned int u32; +#else typedef signed long s32; typedef unsigned long u32; +#endif typedef signed long long int s64; typedef unsigned long long int u64; diff --git a/include/dusk/dvd_emu.h b/include/dusk/dvd_emu.h new file mode 100644 index 0000000000..8366b2b37b --- /dev/null +++ b/include/dusk/dvd_emu.h @@ -0,0 +1,45 @@ +#ifndef DOLPHIN_DVD_EMU_H +#define DOLPHIN_DVD_EMU_H + +#include "dolphin/types.h" +#include + +// PC-Emulation der DVD-Funktionen +namespace DvdEmu { + +// Basis-Pfad zum Datenordner (relativ zur .exe) +void setBasePath(const char* path); +const char* getBasePath(); + +// Konvertiert GameCube-Pfad zu PC-Pfad +// z.B. "/res/Object/LogoUs.arc" -> "C:/Games/Dusk/data/res/Object/LogoUs.arc" +std::string convertPath(const char* gcPath); + +// Prüft ob Datei existiert +bool fileExists(const char* gcPath); + +// Lädt Datei komplett in Speicher +// Gibt Pointer zurück, Größe wird in outSize geschrieben +// Caller muss Speicher mit free() freigeben +void* loadFile(const char* gcPath, u32* outSize, void* heap = nullptr); + +// Lädt Datei in vorhandenen Buffer +// Gibt gelesene Bytes zurück +u32 loadFileToBuffer(const char* gcPath, void* buffer, u32 bufferSize, u32 offset = 0); + +// Datei-Größe abfragen +u32 getFileSize(const char* gcPath); + +} // namespace DvdEmu + +// Ersatz für DVDConvertPathToEntrynum +// Gibt einen "Fake" Entry-Number zurück (Hash des Pfads) oder -1 wenn nicht gefunden +s32 DVDConvertPathToEntrynum_Emu(const char* path); + +// Speichert Pfad für Entry-Number (für späteres Laden) +void DVDRegisterPath(s32 entryNum, const char* path); + +// Holt Pfad für Entry-Number +const char* DVDGetPathForEntry(s32 entryNum); + +#endif // DOLPHIN_DVD_EMU_H diff --git a/include/dusk/endian.h b/include/dusk/endian.h new file mode 100644 index 0000000000..6623f2f0b2 --- /dev/null +++ b/include/dusk/endian.h @@ -0,0 +1,94 @@ +#ifndef DOLPHIN_ENDIAN_H +#define DOLPHIN_ENDIAN_H + +#include "dolphin/types.h" + +// Platform detection - Little Endian targets +#if defined(_WIN32) || defined(__x86_64__) || defined(__i386__) || defined(__aarch64__) || defined(_M_X64) || defined(_M_IX86) + #define TARGET_LITTLE_ENDIAN 1 +#else + #define TARGET_LITTLE_ENDIAN 0 +#endif + +#if TARGET_LITTLE_ENDIAN + #ifdef _MSC_VER + #include + #define BSWAP16(x) _byteswap_ushort(x) + #define BSWAP32(x) _byteswap_ulong(x) + #else + #define BSWAP16(x) __builtin_bswap16(x) + #define BSWAP32(x) __builtin_bswap32(x) + #endif +#else + #define BSWAP16(x) (x) + #define BSWAP32(x) (x) +#endif + +// Big-Endian to Host conversion +inline u16 be16(u16 val) { return BSWAP16(val); } +inline s16 be16s(s16 val) { return (s16)BSWAP16((u16)val); } +inline u32 be32(u32 val) { return BSWAP32(val); } + +inline s32 be32s(s32 val) { return (s32)BSWAP32((u32)val); } + +#ifdef TARGET_PC +// Helper wrappers so code below reads nicely: +static inline u16 RES_U16(u16 v) { + return be16(v); +} +static inline s16 RES_S16(s16 v) { + return be16s(v); +} +static inline u32 RES_U32(u32 v) { + return be32(v); +} +static inline s32 RES_S32(s32 v) { + return be32s(v); +} +#else +// On GameCube host-endian == file-endian, these are no-ops (keep as macros to allow compile in +// original code paths) +#define RES_U16(x) (x) +#define RES_S16(x) (x) +#define RES_U32(x) (x) +#define RES_S32(x) (x) +#endif + +#ifdef TARGET_PC + +/* + * Declares a big-endian integer type. + */ +template +struct BE { + T inner; + operator T() const; +}; + +template<> +inline BE::operator u16() const { + return RES_U16(inner); +} + +template<> +inline BE::operator s16() const { + return RES_S16(inner); +} + +template<> +inline BE::operator u32() const { + return RES_U32(inner); +} + +template<> +inline BE::operator s32() const { + return RES_S32(inner); +} + +#define BE(T) BE +#else +#define BE(T) T +#endif + + +#endif // DOLPHIN_ENDIAN_H diff --git a/include/dusk/extras.h b/include/dusk/extras.h index 242cd0478c..562ca051c1 100644 --- a/include/dusk/extras.h +++ b/include/dusk/extras.h @@ -5,8 +5,10 @@ extern "C" { #endif +#ifndef _MSC_VER int strnicmp(const char* str1, const char* str2, int n); int stricmp(const char* str1, const char* str2); +#endif #ifdef __cplusplus } diff --git a/include/f_op/f_op_camera_mng.h b/include/f_op/f_op_camera_mng.h index c722784386..38ee6e8d07 100644 --- a/include/f_op/f_op_camera_mng.h +++ b/include/f_op/f_op_camera_mng.h @@ -38,12 +38,12 @@ inline void fopCamM_SetAngleY(camera_class* i_camera, s16 angle) { i_camera->angle.y = angle; } -inline void fopCamM_SetNear(camera_class* i_this, f32 near) { - i_this->near = near; +inline void fopCamM_SetNear(camera_class* i_this, f32 near_) { + i_this->near_ = near_; } -inline void fopCamM_SetFar(camera_class* i_this, f32 far) { - i_this->far = far; +inline void fopCamM_SetFar(camera_class* i_this, f32 far_) { + i_this->far_ = far_; } inline void fopCamM_SetFovy(camera_class* i_this, f32 fovy) { diff --git a/include/f_op/f_op_msg_mng.h b/include/f_op/f_op_msg_mng.h index 214d38da8e..9bb8bc0ff3 100644 --- a/include/f_op/f_op_msg_mng.h +++ b/include/f_op/f_op_msg_mng.h @@ -8,7 +8,7 @@ class JKRExpHeap; class JKRHeap; class fopAc_ac_c; -class msg_class; +struct msg_class; struct msg_process_profile_definition { /* 0x00 */ leaf_process_profile_definition base; diff --git a/include/f_op/f_op_scene.h b/include/f_op/f_op_scene.h index a42eee7211..0e736093f1 100644 --- a/include/f_op/f_op_scene.h +++ b/include/f_op/f_op_scene.h @@ -12,7 +12,7 @@ struct scene_method_class { }; typedef struct scene_process_profile_definition { - /* 0x00 */ node_process_profile_definition nase; + /* 0x00 */ node_process_profile_definition base; /* 0x20 */ scene_method_class* submethod; // Subclass methods /* 0x24 */ u32 unk_0x24; // padding? } scene_process_profile_definition; diff --git a/include/f_op/f_op_view.h b/include/f_op/f_op_view.h index 07971a7642..cd6aeccbbc 100644 --- a/include/f_op/f_op_view.h +++ b/include/f_op/f_op_view.h @@ -43,8 +43,8 @@ struct view_class { /* 0x000 */ leafdraw_class base; /* 0x0C0 */ leafdraw_method_class* sub_method; /* 0x0C4 */ u8 field_0xc4; - /* 0x0C8 */ f32 near; - /* 0x0CC */ f32 far; + /* 0x0C8 */ f32 near_; + /* 0x0CC */ f32 far_; /* 0x0D0 */ f32 fovy; /* 0x0D4 */ f32 aspect; /* 0x0D8 */ lookat_class lookat; diff --git a/include/f_pc/f_pc_profile_lst.h b/include/f_pc/f_pc_profile_lst.h index f768d3e118..a7f100b654 100644 --- a/include/f_pc/f_pc_profile_lst.h +++ b/include/f_pc/f_pc_profile_lst.h @@ -3,6 +3,16 @@ #include "f_pc/f_pc_profile.h" +#ifndef __MWERKS__ +#include "f_op/f_op_actor.h" +#include "f_op/f_op_camera.h" +#include "f_op/f_op_kankyo.h" +#include "f_op/f_op_msg_mng.h" +#include "f_op/f_op_overlap.h" +#include "f_op/f_op_scene.h" +#endif + +#ifdef __MWERKS__ extern process_profile_definition g_profile_ALINK; extern process_profile_definition g_profile_NO_CHG_ROOM; extern process_profile_definition g_profile_ITEM; @@ -795,6 +805,801 @@ extern process_profile_definition g_profile_TALK; extern process_profile_definition g_profile_TBOX_SW; extern process_profile_definition g_profile_TITLE; extern process_profile_definition g_profile_WarpBug; +#else +extern actor_process_profile_definition g_profile_ALINK; +extern actor_process_profile_definition g_profile_NO_CHG_ROOM; +extern actor_process_profile_definition g_profile_ITEM; +extern camera_process_profile_definition g_profile_CAMERA; +extern camera_process_profile_definition g_profile_CAMERA2; +extern kankyo_process_profile_definition g_profile_ENVSE; +extern msg_process_profile_definition g_profile_GAMEOVER; +extern kankyo_process_profile_definition g_profile_KANKYO; +extern kankyo_process_profile_definition g_profile_KYEFF; +extern kankyo_process_profile_definition g_profile_KYEFF2; +extern kankyo_process_profile_definition g_profile_KY_THUNDER; +extern msg_process_profile_definition g_profile_MENUWINDOW; +extern msg_process_profile_definition g_profile_METER2; +extern msg_process_profile_definition g_profile_MSG_OBJECT; +extern overlap_process_profile_definition g_profile_OVERLAP0; +extern overlap_process_profile_definition g_profile_OVERLAP1; +extern overlap_process_profile_definition g_profile_OVERLAP6; +extern overlap_process_profile_definition g_profile_OVERLAP7; +extern overlap_process_profile_definition g_profile_OVERLAP8; +extern overlap_process_profile_definition g_profile_OVERLAP9; +extern overlap_process_profile_definition g_profile_OVERLAP10; +extern overlap_process_profile_definition g_profile_OVERLAP11; +extern overlap_process_profile_definition g_profile_OVERLAP2; +extern overlap_process_profile_definition g_profile_OVERLAP3; +extern scene_process_profile_definition g_profile_LOGO_SCENE; +extern scene_process_profile_definition g_profile_MENU_SCENE; +extern scene_process_profile_definition g_profile_NAME_SCENE; +extern scene_process_profile_definition g_profile_NAMEEX_SCENE; +extern scene_process_profile_definition g_profile_PLAY_SCENE; +extern scene_process_profile_definition g_profile_OPENING_SCENE; +extern scene_process_profile_definition g_profile_ROOM_SCENE; +extern scene_process_profile_definition g_profile_WARNING_SCENE; +extern scene_process_profile_definition g_profile_WARNING2_SCENE; +extern msg_process_profile_definition g_profile_TIMER; +extern kankyo_process_profile_definition g_profile_WMARK; +extern kankyo_process_profile_definition g_profile_WPILLAR; +extern actor_process_profile_definition g_profile_ANDSW; +extern actor_process_profile_definition2 g_profile_BG; +extern actor_process_profile_definition g_profile_BG_OBJ; +extern actor_process_profile_definition g_profile_DMIDNA; +extern actor_process_profile_definition g_profile_DBDOOR; +extern actor_process_profile_definition g_profile_KNOB20; +extern actor_process_profile_definition g_profile_DOOR20; +extern actor_process_profile_definition g_profile_SPIRAL_DOOR; +extern actor_process_profile_definition2 g_profile_DSHUTTER; +extern actor_process_profile_definition g_profile_EP; +extern actor_process_profile_definition g_profile_HITOBJ; +extern actor_process_profile_definition g_profile_KYTAG00; +extern actor_process_profile_definition g_profile_KYTAG04; +extern actor_process_profile_definition g_profile_KYTAG17; +extern actor_process_profile_definition g_profile_OBJ_BEF; +extern actor_process_profile_definition g_profile_Obj_BurnBox; +extern actor_process_profile_definition g_profile_Obj_Carry; +extern actor_process_profile_definition g_profile_OBJ_ITO; +extern actor_process_profile_definition g_profile_Obj_Movebox; +extern actor_process_profile_definition g_profile_Obj_Swpush; +extern actor_process_profile_definition g_profile_Obj_Timer; +extern actor_process_profile_definition2 g_profile_PATH_LINE; +extern actor_process_profile_definition2 g_profile_SCENE_EXIT; +extern actor_process_profile_definition g_profile_SET_BG_OBJ; +extern actor_process_profile_definition g_profile_SWHIT0; +extern actor_process_profile_definition g_profile_TAG_ALLMATO; +extern actor_process_profile_definition g_profile_TAG_CAMERA; +extern actor_process_profile_definition g_profile_TAG_CHKPOINT; +extern actor_process_profile_definition g_profile_TAG_EVENT; +extern actor_process_profile_definition g_profile_TAG_EVT; +extern actor_process_profile_definition g_profile_TAG_EVTAREA; +extern actor_process_profile_definition g_profile_TAG_EVTMSG; +extern actor_process_profile_definition g_profile_TAG_HOWL; +extern actor_process_profile_definition g_profile_TAG_KMSG; +extern actor_process_profile_definition g_profile_TAG_LANTERN; +extern actor_process_profile_definition g_profile_Tag_Mist; +extern actor_process_profile_definition g_profile_TAG_MSG; +extern actor_process_profile_definition g_profile_TAG_PUSH; +extern actor_process_profile_definition g_profile_TAG_TELOP; +extern actor_process_profile_definition g_profile_TBOX; +extern actor_process_profile_definition g_profile_TBOX2; +extern actor_process_profile_definition g_profile_VRBOX; +extern actor_process_profile_definition g_profile_VRBOX2; +extern actor_process_profile_definition g_profile_ARROW; +extern actor_process_profile_definition g_profile_BOOMERANG; +extern actor_process_profile_definition g_profile_CROD; +extern actor_process_profile_definition g_profile_DEMO00; +extern actor_process_profile_definition g_profile_DISAPPEAR; +extern actor_process_profile_definition g_profile_MG_ROD; +extern actor_process_profile_definition g_profile_MIDNA; +extern actor_process_profile_definition g_profile_NBOMB; +extern actor_process_profile_definition g_profile_Obj_LifeContainer; +extern actor_process_profile_definition g_profile_Obj_Yousei; +extern actor_process_profile_definition g_profile_SPINNER; +extern actor_process_profile_definition g_profile_SUSPEND; +extern actor_process_profile_definition g_profile_Tag_Attp; +extern actor_process_profile_definition g_profile_ALLDIE; +extern actor_process_profile_definition g_profile_ANDSW2; +extern actor_process_profile_definition g_profile_BD; +extern actor_process_profile_definition g_profile_CANOE; +extern actor_process_profile_definition g_profile_CSTAF; +extern actor_process_profile_definition g_profile_Demo_Item; +extern actor_process_profile_definition g_profile_L1BOSS_DOOR; +extern actor_process_profile_definition g_profile_E_DN; +extern actor_process_profile_definition g_profile_E_FM; +extern actor_process_profile_definition g_profile_E_GA; +extern actor_process_profile_definition g_profile_E_HB; +extern actor_process_profile_definition g_profile_E_NEST; +extern actor_process_profile_definition g_profile_E_RD; +extern actor_process_profile_definition g_profile_ECONT; +extern actor_process_profile_definition g_profile_FR; +extern actor_process_profile_definition g_profile_GRASS; +extern actor_process_profile_definition g_profile_KYTAG05; +extern actor_process_profile_definition g_profile_KYTAG10; +extern actor_process_profile_definition g_profile_KYTAG11; +extern actor_process_profile_definition g_profile_KYTAG14; +extern actor_process_profile_definition g_profile_MG_FISH; +extern actor_process_profile_definition g_profile_NPC_BESU; +extern actor_process_profile_definition g_profile_NPC_FAIRY_SEIREI; +extern actor_process_profile_definition g_profile_NPC_FISH; +extern actor_process_profile_definition g_profile_NPC_HENNA; +extern actor_process_profile_definition g_profile_NPC_KAKASHI; +extern actor_process_profile_definition g_profile_NPC_KKRI; +extern actor_process_profile_definition g_profile_NPC_KOLIN; +extern actor_process_profile_definition g_profile_NPC_MARO; +extern actor_process_profile_definition g_profile_NPC_TARO; +extern actor_process_profile_definition g_profile_NPC_TKJ; +extern actor_process_profile_definition g_profile_Obj_BHASHI; +extern actor_process_profile_definition g_profile_Obj_BkDoor; +extern actor_process_profile_definition g_profile_Obj_BossWarp; +extern actor_process_profile_definition g_profile_Obj_Cboard; +extern actor_process_profile_definition g_profile_Obj_Digpl; +extern actor_process_profile_definition g_profile_Obj_Eff; +extern actor_process_profile_definition g_profile_OBJ_FMOBJ; +extern actor_process_profile_definition g_profile_Obj_GpTaru; +extern actor_process_profile_definition g_profile_Obj_HHASHI; +extern actor_process_profile_definition g_profile_OBJ_KANBAN2; +extern actor_process_profile_definition g_profile_OBJ_KBACKET; +extern actor_process_profile_definition g_profile_Obj_KkrGate; +extern actor_process_profile_definition g_profile_Obj_KLift00; +extern actor_process_profile_definition g_profile_Tag_KtOnFire; +extern actor_process_profile_definition g_profile_Obj_Ladder; +extern actor_process_profile_definition g_profile_Obj_Lv2Candle; +extern actor_process_profile_definition g_profile_Obj_MagneArm; +extern actor_process_profile_definition g_profile_Obj_MetalBox; +extern actor_process_profile_definition g_profile_Obj_MGate; +extern actor_process_profile_definition g_profile_Obj_NamePlate; +extern actor_process_profile_definition g_profile_Obj_OnCloth; +extern actor_process_profile_definition g_profile_Obj_RopeBridge; +extern actor_process_profile_definition g_profile_Obj_SwallShutter; +extern actor_process_profile_definition g_profile_OBJ_STICK; +extern actor_process_profile_definition g_profile_Obj_StoneMark; +extern actor_process_profile_definition g_profile_Obj_Swpropeller; +extern actor_process_profile_definition g_profile_Obj_Swpush5; +extern actor_process_profile_definition g_profile_Obj_Yobikusa; +extern actor_process_profile_definition g_profile_SCENE_EXIT2; +extern actor_process_profile_definition g_profile_ShopItem; +extern actor_process_profile_definition g_profile_SQ; +extern actor_process_profile_definition g_profile_SWC00; +extern actor_process_profile_definition g_profile_Tag_CstaSw; +extern actor_process_profile_definition g_profile_Tag_AJnot; +extern actor_process_profile_definition g_profile_Tag_AttackItem; +extern actor_process_profile_definition g_profile_Tag_Gstart; +extern actor_process_profile_definition g_profile_Tag_Hinit; +extern actor_process_profile_definition g_profile_Tag_Hjump; +extern actor_process_profile_definition g_profile_Tag_Hstop; +extern actor_process_profile_definition g_profile_Tag_Lv2PrChk; +extern actor_process_profile_definition g_profile_Tag_Magne; +extern actor_process_profile_definition g_profile_Tag_Mhint; +extern actor_process_profile_definition g_profile_Tag_Mstop; +extern actor_process_profile_definition g_profile_Tag_Spring; +extern actor_process_profile_definition g_profile_Tag_Statue; +extern actor_process_profile_definition g_profile_Ykgr; +extern actor_process_profile_definition g_profile_DR; +extern actor_process_profile_definition g_profile_L7lowDr; +extern actor_process_profile_definition g_profile_L7ODR; +extern actor_process_profile_definition g_profile_B_BH; +extern actor_process_profile_definition g_profile_B_BQ; +extern actor_process_profile_definition g_profile_B_DR; +extern actor_process_profile_definition g_profile_B_DRE; +extern actor_process_profile_definition g_profile_B_DS; +extern actor_process_profile_definition g_profile_B_GG; +extern actor_process_profile_definition g_profile_B_GM; +extern actor_process_profile_definition g_profile_B_GND; +extern actor_process_profile_definition g_profile_B_GO; +extern actor_process_profile_definition g_profile_B_GOS; +extern actor_process_profile_definition g_profile_B_MGN; +extern actor_process_profile_definition g_profile_B_OB; +extern actor_process_profile_definition g_profile_B_OH; +extern actor_process_profile_definition g_profile_B_OH2; +extern actor_process_profile_definition g_profile_B_TN; +extern actor_process_profile_definition g_profile_B_YO; +extern actor_process_profile_definition g_profile_B_YOI; +extern actor_process_profile_definition g_profile_B_ZANT; +extern actor_process_profile_definition g_profile_B_ZANTM; +extern actor_process_profile_definition g_profile_B_ZANTZ; +extern actor_process_profile_definition g_profile_B_ZANTS; +extern actor_process_profile_definition g_profile_BALLOON2D; +extern actor_process_profile_definition g_profile_BULLET; +extern actor_process_profile_definition g_profile_COACH2D; +extern actor_process_profile_definition g_profile_COACH_FIRE; +extern actor_process_profile_definition g_profile_COW; +extern actor_process_profile_definition g_profile_CSTATUE; +extern actor_process_profile_definition g_profile_DO; +extern actor_process_profile_definition g_profile_BOSS_DOOR; +extern actor_process_profile_definition g_profile_L5BOSS_DOOR; +extern actor_process_profile_definition g_profile_L1MBOSS_DOOR; +extern actor_process_profile_definition g_profile_PushDoor; +extern actor_process_profile_definition g_profile_E_AI; +extern actor_process_profile_definition g_profile_E_ARROW; +extern actor_process_profile_definition g_profile_E_BA; +extern actor_process_profile_definition g_profile_E_BEE; +extern actor_process_profile_definition g_profile_E_BG; +extern actor_process_profile_definition g_profile_E_BI; +extern actor_process_profile_definition g_profile_E_BI_LEAF; +extern actor_process_profile_definition g_profile_E_BS; +extern actor_process_profile_definition g_profile_E_BU; +extern actor_process_profile_definition g_profile_E_BUG; +extern actor_process_profile_definition g_profile_E_CR; +extern actor_process_profile_definition g_profile_E_CR_EGG; +extern actor_process_profile_definition g_profile_E_DB; +extern actor_process_profile_definition g_profile_E_DB_LEAF; +extern actor_process_profile_definition g_profile_E_DD; +extern actor_process_profile_definition g_profile_E_DF; +extern actor_process_profile_definition g_profile_E_DK; +extern actor_process_profile_definition g_profile_E_DT; +extern actor_process_profile_definition g_profile_E_FB; +extern actor_process_profile_definition g_profile_E_FK; +extern actor_process_profile_definition g_profile_E_FS; +extern actor_process_profile_definition g_profile_E_FZ; +extern actor_process_profile_definition g_profile_E_GB; +extern actor_process_profile_definition g_profile_E_GE; +extern actor_process_profile_definition g_profile_E_GI; +extern actor_process_profile_definition g_profile_E_GM; +extern actor_process_profile_definition g_profile_E_GOB; +extern actor_process_profile_definition g_profile_E_GS; +extern actor_process_profile_definition g_profile_E_HB_LEAF; +extern actor_process_profile_definition g_profile_E_HM; +extern actor_process_profile_definition g_profile_E_HP; +extern actor_process_profile_definition g_profile_E_HZ; +extern actor_process_profile_definition g_profile_E_HZELDA; +extern actor_process_profile_definition g_profile_E_IS; +extern actor_process_profile_definition g_profile_E_KG; +extern actor_process_profile_definition g_profile_E_KK; +extern actor_process_profile_definition g_profile_E_KR; +extern actor_process_profile_definition g_profile_E_MB; +extern actor_process_profile_definition g_profile_E_MD; +extern actor_process_profile_definition g_profile_E_MF; +extern actor_process_profile_definition g_profile_E_MK; +extern actor_process_profile_definition g_profile_E_MK_BO; +extern actor_process_profile_definition g_profile_E_MM; +extern actor_process_profile_definition g_profile_E_MM_MT; +extern actor_process_profile_definition g_profile_E_MS; +extern actor_process_profile_definition g_profile_E_NZ; +extern actor_process_profile_definition g_profile_E_OC; +extern actor_process_profile_definition g_profile_E_OctBg; +extern actor_process_profile_definition g_profile_E_OT; +extern actor_process_profile_definition g_profile_E_PH; +extern actor_process_profile_definition g_profile_E_PM; +extern actor_process_profile_definition g_profile_E_PO; +extern actor_process_profile_definition g_profile_E_PZ; +extern actor_process_profile_definition g_profile_E_RB; +extern actor_process_profile_definition g_profile_E_RDB; +extern actor_process_profile_definition g_profile_E_RDY; +extern actor_process_profile_definition g_profile_E_S1; +extern actor_process_profile_definition g_profile_E_SB; +extern actor_process_profile_definition g_profile_E_SF; +extern actor_process_profile_definition g_profile_E_SG; +extern actor_process_profile_definition g_profile_E_SH; +extern actor_process_profile_definition g_profile_E_SM; +extern actor_process_profile_definition g_profile_E_SM2; +extern actor_process_profile_definition g_profile_E_ST; +extern actor_process_profile_definition g_profile_E_ST_LINE; +extern actor_process_profile_definition g_profile_E_SW; +extern actor_process_profile_definition g_profile_E_TH; +extern actor_process_profile_definition g_profile_E_TH_BALL; +extern actor_process_profile_definition g_profile_E_TK; +extern actor_process_profile_definition g_profile_E_TK2; +extern actor_process_profile_definition g_profile_E_TK_BALL; +extern actor_process_profile_definition g_profile_E_TT; +extern actor_process_profile_definition g_profile_E_VT; +extern actor_process_profile_definition g_profile_E_WAP; +extern actor_process_profile_definition g_profile_E_WB; +extern actor_process_profile_definition g_profile_E_WS; +extern actor_process_profile_definition g_profile_E_WW; +extern actor_process_profile_definition g_profile_E_YC; +extern actor_process_profile_definition g_profile_E_YD; +extern actor_process_profile_definition g_profile_E_YD_LEAF; +extern actor_process_profile_definition g_profile_E_YG; +extern actor_process_profile_definition g_profile_E_YH; +extern actor_process_profile_definition g_profile_E_YK; +extern actor_process_profile_definition g_profile_E_YM; +extern actor_process_profile_definition g_profile_E_YM_TAG; +extern actor_process_profile_definition g_profile_E_YMB; +extern actor_process_profile_definition g_profile_E_YR; +extern actor_process_profile_definition g_profile_E_ZH; +extern actor_process_profile_definition g_profile_E_ZM; +extern actor_process_profile_definition g_profile_E_ZS; +extern actor_process_profile_definition g_profile_FORMATION_MNG; +extern actor_process_profile_definition g_profile_GUARD_MNG; +extern actor_process_profile_definition g_profile_HORSE; +extern actor_process_profile_definition g_profile_HOZELDA; +extern actor_process_profile_definition g_profile_Izumi_Gate; +extern actor_process_profile_definition g_profile_KAGO; +extern actor_process_profile_definition g_profile_KYTAG01; +extern actor_process_profile_definition g_profile_KYTAG02; +extern actor_process_profile_definition g_profile_KYTAG03; +extern actor_process_profile_definition g_profile_KYTAG06; +extern actor_process_profile_definition g_profile_KYTAG07; +extern actor_process_profile_definition g_profile_KYTAG08; +extern actor_process_profile_definition g_profile_KYTAG09; +extern actor_process_profile_definition g_profile_KYTAG12; +extern actor_process_profile_definition g_profile_KYTAG13; +extern actor_process_profile_definition g_profile_KYTAG15; +extern actor_process_profile_definition g_profile_KYTAG16; +extern actor_process_profile_definition g_profile_MANT; +extern actor_process_profile_definition g_profile_FSHOP; +extern actor_process_profile_definition g_profile_MIRROR; +extern actor_process_profile_definition g_profile_MOVIE_PLAYER; +extern actor_process_profile_definition g_profile_MYNA; +extern actor_process_profile_definition g_profile_NI; +extern actor_process_profile_definition g_profile_NPC_ARU; +extern actor_process_profile_definition g_profile_NPC_ASH; +extern actor_process_profile_definition g_profile_NPC_ASHB; +extern actor_process_profile_definition g_profile_NPC_BANS; +extern actor_process_profile_definition g_profile_NPC_BLUENS; +extern actor_process_profile_definition g_profile_NPC_BOU; +extern actor_process_profile_definition g_profile_NPC_BOU_S; +extern actor_process_profile_definition g_profile_NPC_CD3; +extern actor_process_profile_definition g_profile_NPC_CHAT; +extern actor_process_profile_definition g_profile_NPC_CHIN; +extern actor_process_profile_definition g_profile_NPC_CLERKA; +extern actor_process_profile_definition g_profile_NPC_CLERKB; +extern actor_process_profile_definition g_profile_NPC_CLERKT; +extern actor_process_profile_definition g_profile_NPC_COACH; +extern actor_process_profile_definition g_profile_NPC_DF; +extern actor_process_profile_definition g_profile_NPC_DOC; +extern actor_process_profile_definition g_profile_NPC_DOORBOY; +extern actor_process_profile_definition g_profile_NPC_DRSOL; +extern actor_process_profile_definition g_profile_NPC_DU; +extern actor_process_profile_definition g_profile_NPC_FAIRY; +extern actor_process_profile_definition g_profile_NPC_FGUARD; +extern actor_process_profile_definition g_profile_NPC_GND; +extern actor_process_profile_definition g_profile_NPC_GRA; +extern actor_process_profile_definition g_profile_NPC_GRC; +extern actor_process_profile_definition g_profile_NPC_GRD; +extern actor_process_profile_definition g_profile_NPC_GRM; +extern actor_process_profile_definition g_profile_NPC_GRMC; +extern actor_process_profile_definition g_profile_NPC_GRO; +extern actor_process_profile_definition g_profile_NPC_GRR; +extern actor_process_profile_definition g_profile_NPC_GRS; +extern actor_process_profile_definition g_profile_NPC_GRZ; +extern actor_process_profile_definition g_profile_NPC_GUARD; +extern actor_process_profile_definition g_profile_NPC_GWOLF; +extern actor_process_profile_definition g_profile_NPC_HANJO; +extern actor_process_profile_definition g_profile_NPC_HENNA0; +extern actor_process_profile_definition g_profile_NPC_HOZ; +extern actor_process_profile_definition g_profile_NPC_IMPAL; +extern actor_process_profile_definition g_profile_NPC_INKO; +extern actor_process_profile_definition g_profile_NPC_INS; +extern actor_process_profile_definition g_profile_NPC_JAGAR; +extern actor_process_profile_definition g_profile_NPC_KASIHANA; +extern actor_process_profile_definition g_profile_NPC_KASIKYU; +extern actor_process_profile_definition g_profile_NPC_KASIMICH; +extern actor_process_profile_definition g_profile_NPC_KDK; +extern actor_process_profile_definition g_profile_NPC_KN; +extern actor_process_profile_definition g_profile_NPC_KNJ; +extern actor_process_profile_definition g_profile_NPC_KOLINB; +extern actor_process_profile_definition g_profile_NPC_KS; +extern actor_process_profile_definition g_profile_NPC_KYURY; +extern actor_process_profile_definition g_profile_NPC_LEN; +extern actor_process_profile_definition g_profile_NPC_LF; +extern actor_process_profile_definition g_profile_NPC_LUD; +extern actor_process_profile_definition g_profile_NPC_MIDP; +extern actor_process_profile_definition g_profile_NPC_MK; +extern actor_process_profile_definition g_profile_NPC_MOI; +extern actor_process_profile_definition g_profile_NPC_MOIR; +extern actor_process_profile_definition g_profile_MYNA2; +extern actor_process_profile_definition g_profile_NPC_NE; +extern actor_process_profile_definition g_profile_NPC_P2; +extern actor_process_profile_definition g_profile_NPC_PACHI_BESU; +extern actor_process_profile_definition g_profile_NPC_PACHI_MARO; +extern actor_process_profile_definition g_profile_NPC_PACHI_TARO; +extern actor_process_profile_definition g_profile_NPC_PASSER; +extern actor_process_profile_definition g_profile_NPC_PASSER2; +extern actor_process_profile_definition g_profile_NPC_POST; +extern actor_process_profile_definition g_profile_NPC_POUYA; +extern actor_process_profile_definition g_profile_NPC_PRAYER; +extern actor_process_profile_definition g_profile_NPC_RACA; +extern actor_process_profile_definition g_profile_NPC_RAFREL; +extern actor_process_profile_definition g_profile_NPC_SARU; +extern actor_process_profile_definition g_profile_NPC_SEIB; +extern actor_process_profile_definition g_profile_NPC_SEIC; +extern actor_process_profile_definition g_profile_NPC_SEID; +extern actor_process_profile_definition g_profile_NPC_SEIRA; +extern actor_process_profile_definition g_profile_NPC_SERA2; +extern actor_process_profile_definition g_profile_NPC_SEIREI; +extern actor_process_profile_definition g_profile_NPC_SHAD; +extern actor_process_profile_definition g_profile_NPC_SHAMAN; +extern actor_process_profile_definition g_profile_NPC_SHOE; +extern actor_process_profile_definition g_profile_NPC_SHOP0; +extern actor_process_profile_definition g_profile_NPC_SMARO; +extern actor_process_profile_definition g_profile_NPC_SOLA; +extern actor_process_profile_definition g_profile_NPC_SOLDIERa; +extern actor_process_profile_definition g_profile_NPC_SOLDIERb; +extern actor_process_profile_definition g_profile_NPC_SQ; +extern actor_process_profile_definition g_profile_NPC_THE; +extern actor_process_profile_definition g_profile_NPC_THEB; +extern actor_process_profile_definition g_profile_NPC_TK; +extern actor_process_profile_definition g_profile_NPC_TKC; +extern actor_process_profile_definition g_profile_NPC_TKJ2; +extern actor_process_profile_definition g_profile_NPC_TKS; +extern actor_process_profile_definition g_profile_NPC_TOBY; +extern actor_process_profile_definition g_profile_NPC_TR; +extern actor_process_profile_definition g_profile_NPC_URI; +extern actor_process_profile_definition g_profile_NPC_WORM; +extern actor_process_profile_definition g_profile_NPC_WRESTLER; +extern actor_process_profile_definition g_profile_NPC_YAMID; +extern actor_process_profile_definition g_profile_NPC_YAMIS; +extern actor_process_profile_definition g_profile_NPC_YAMIT; +extern actor_process_profile_definition g_profile_NPC_YELIA; +extern actor_process_profile_definition g_profile_NPC_YKM; +extern actor_process_profile_definition g_profile_NPC_YKW; +extern actor_process_profile_definition g_profile_NPC_ZANB; +extern actor_process_profile_definition g_profile_NPC_ZANT; +extern actor_process_profile_definition g_profile_NPC_ZELR; +extern actor_process_profile_definition g_profile_NPC_ZELRO; +extern actor_process_profile_definition g_profile_NPC_ZELDA; +extern actor_process_profile_definition g_profile_NPC_ZRA; +extern actor_process_profile_definition g_profile_NPC_ZRC; +extern actor_process_profile_definition g_profile_NPC_ZRZ; +extern actor_process_profile_definition g_profile_Obj_Lv5Key; +extern actor_process_profile_definition g_profile_Obj_Turara; +extern actor_process_profile_definition g_profile_Obj_TvCdlst; +extern actor_process_profile_definition g_profile_Obj_Ytaihou; +extern actor_process_profile_definition g_profile_Obj_AmiShutter; +extern actor_process_profile_definition g_profile_Obj_Ari; +extern actor_process_profile_definition g_profile_OBJ_AUTOMATA; +extern actor_process_profile_definition g_profile_Obj_Avalanche; +extern actor_process_profile_definition g_profile_OBJ_BALLOON; +extern actor_process_profile_definition g_profile_Obj_BarDesk; +extern actor_process_profile_definition g_profile_Obj_Batta; +extern actor_process_profile_definition g_profile_Obj_BBox; +extern actor_process_profile_definition g_profile_OBJ_BED; +extern actor_process_profile_definition g_profile_Obj_Bemos; +extern actor_process_profile_definition g_profile_Obj_Bhbridge; +extern actor_process_profile_definition g_profile_Obj_BkLeaf; +extern actor_process_profile_definition g_profile_BkyRock; +extern actor_process_profile_definition g_profile_Obj_BmWindow; +extern actor_process_profile_definition g_profile_Obj_BoomShutter; +extern actor_process_profile_definition g_profile_Obj_Bombf; +extern actor_process_profile_definition g_profile_OBJ_BOUMATO; +extern actor_process_profile_definition g_profile_OBJ_BRG; +extern actor_process_profile_definition g_profile_Obj_BsGate; +extern actor_process_profile_definition g_profile_Obj_awaPlar; +extern actor_process_profile_definition g_profile_Obj_CatDoor; +extern actor_process_profile_definition g_profile_OBJ_CB; +extern actor_process_profile_definition g_profile_Obj_ChainBlock; +extern actor_process_profile_definition g_profile_Obj_Cdoor; +extern actor_process_profile_definition g_profile_Obj_Chandelier; +extern actor_process_profile_definition g_profile_Obj_Chest; +extern actor_process_profile_definition g_profile_Obj_Cho; +extern actor_process_profile_definition g_profile_Obj_Cowdoor; +extern actor_process_profile_definition g_profile_Obj_Crope; +extern actor_process_profile_definition g_profile_Obj_CRVFENCE; +extern actor_process_profile_definition g_profile_Obj_CRVGATE; +extern actor_process_profile_definition g_profile_Obj_CRVHAHEN; +extern actor_process_profile_definition g_profile_Obj_CRVLH_DW; +extern actor_process_profile_definition g_profile_Obj_CRVLH_UP; +extern actor_process_profile_definition g_profile_Obj_CRVSTEEL; +extern actor_process_profile_definition g_profile_Obj_Crystal; +extern actor_process_profile_definition g_profile_Obj_ChainWall; +extern actor_process_profile_definition g_profile_Obj_DamCps; +extern actor_process_profile_definition g_profile_Obj_Dan; +extern actor_process_profile_definition g_profile_Obj_Digholl; +extern actor_process_profile_definition g_profile_Obj_DigSnow; +extern actor_process_profile_definition g_profile_Obj_Elevator; +extern actor_process_profile_definition g_profile_Obj_Drop; +extern actor_process_profile_definition g_profile_Obj_DUST; +extern actor_process_profile_definition g_profile_Obj_E_CREATE; +extern actor_process_profile_definition g_profile_Obj_FallObj; +extern actor_process_profile_definition g_profile_Obj_Fan; +extern actor_process_profile_definition g_profile_Obj_Fchain; +extern actor_process_profile_definition g_profile_Obj_FireWood; +extern actor_process_profile_definition g_profile_Obj_FireWood2; +extern actor_process_profile_definition g_profile_Obj_FirePillar; +extern actor_process_profile_definition g_profile_Obj_FirePillar2; +extern actor_process_profile_definition g_profile_Obj_Flag; +extern actor_process_profile_definition g_profile_Obj_Flag2; +extern actor_process_profile_definition g_profile_Obj_Flag3; +extern actor_process_profile_definition g_profile_OBJ_FOOD; +extern actor_process_profile_definition g_profile_OBJ_FW; +extern actor_process_profile_definition g_profile_OBJ_GADGET; +extern actor_process_profile_definition g_profile_Obj_GanonWall; +extern actor_process_profile_definition g_profile_Obj_GanonWall2; +extern actor_process_profile_definition g_profile_OBJ_GB; +extern actor_process_profile_definition g_profile_Obj_Geyser; +extern actor_process_profile_definition g_profile_Obj_glowSphere; +extern actor_process_profile_definition g_profile_OBJ_GM; +extern actor_process_profile_definition g_profile_Obj_GoGate; +extern actor_process_profile_definition g_profile_Obj_GOMIKABE; +extern actor_process_profile_definition g_profile_OBJ_GRA; +extern actor_process_profile_definition g_profile_GRA_WALL; +extern actor_process_profile_definition g_profile_Obj_GraRock; +extern actor_process_profile_definition g_profile_Obj_GraveStone; +extern actor_process_profile_definition g_profile_GRDWATER; +extern actor_process_profile_definition g_profile_Obj_GrzRock; +extern actor_process_profile_definition g_profile_Obj_H_Saku; +extern actor_process_profile_definition g_profile_Obj_HBarrel; +extern actor_process_profile_definition g_profile_Obj_HFtr; +extern actor_process_profile_definition g_profile_Obj_MHasu; +extern actor_process_profile_definition g_profile_Obj_Hata; +extern actor_process_profile_definition g_profile_OBJ_HB; +extern actor_process_profile_definition g_profile_Obj_HBombkoya; +extern actor_process_profile_definition g_profile_Obj_HeavySw; +extern actor_process_profile_definition g_profile_Obj_Hfuta; +extern actor_process_profile_definition g_profile_Obj_HsTarget; +extern actor_process_profile_definition g_profile_Obj_Ice_l; +extern actor_process_profile_definition g_profile_Obj_Ice_s; +extern actor_process_profile_definition g_profile_Obj_IceBlock; +extern actor_process_profile_definition g_profile_Obj_IceLeaf; +extern actor_process_profile_definition g_profile_OBJ_IHASI; +extern actor_process_profile_definition g_profile_Obj_Ikada; +extern actor_process_profile_definition g_profile_Obj_InoBone; +extern actor_process_profile_definition g_profile_Obj_ITA; +extern actor_process_profile_definition g_profile_OBJ_ITAMATO; +extern actor_process_profile_definition g_profile_Obj_Kabuto; +extern actor_process_profile_definition g_profile_Obj_Kag; +extern actor_process_profile_definition g_profile_OBJ_KAGE; +extern actor_process_profile_definition g_profile_OBJ_KAGO; +extern actor_process_profile_definition g_profile_Obj_Kaisou; +extern actor_process_profile_definition g_profile_Obj_Kam; +extern actor_process_profile_definition g_profile_Obj_Kantera; +extern actor_process_profile_definition g_profile_Obj_Kat; +extern actor_process_profile_definition g_profile_Obj_KazeNeko; +extern actor_process_profile_definition g_profile_OBJ_KBOX; +extern actor_process_profile_definition g_profile_OBJ_KEY; +extern actor_process_profile_definition g_profile_OBJ_KEYHOLE; +extern actor_process_profile_definition g_profile_OBJ_KI; +extern actor_process_profile_definition g_profile_Obj_KiPot; +extern actor_process_profile_definition g_profile_OBJ_KITA; +extern actor_process_profile_definition g_profile_Obj_KJgjs; +extern actor_process_profile_definition g_profile_Obj_KKanban; +extern actor_process_profile_definition g_profile_KN_BULLET; +extern actor_process_profile_definition g_profile_Obj_Kshutter; +extern actor_process_profile_definition g_profile_Obj_Kuw; +extern actor_process_profile_definition g_profile_Obj_KWheel00; +extern actor_process_profile_definition g_profile_Obj_KWheel01; +extern actor_process_profile_definition g_profile_Obj_KznkArm; +extern actor_process_profile_definition g_profile_Obj_Laundry; +extern actor_process_profile_definition g_profile_Obj_LndRope; +extern actor_process_profile_definition g_profile_OBJ_LBOX; +extern actor_process_profile_definition g_profile_OBJ_LP; +extern actor_process_profile_definition g_profile_Obj_Lv1Cdl00; +extern actor_process_profile_definition g_profile_Obj_Lv1Cdl01; +extern actor_process_profile_definition g_profile_Obj_Lv3Candle; +extern actor_process_profile_definition g_profile_Obj_Lv3Water; +extern actor_process_profile_definition g_profile_Obj_Lv3Water2; +extern actor_process_profile_definition g_profile_OBJ_LV3WATERB; +extern actor_process_profile_definition g_profile_Obj_Lv3R10Saka; +extern actor_process_profile_definition g_profile_Obj_WaterEff; +extern actor_process_profile_definition g_profile_Tag_Lv4CandleDm; +extern actor_process_profile_definition g_profile_Tag_Lv4Candle; +extern actor_process_profile_definition g_profile_Obj_Lv4EdShutter; +extern actor_process_profile_definition g_profile_Obj_Lv4Gate; +extern actor_process_profile_definition g_profile_Obj_Lv4HsTarget; +extern actor_process_profile_definition g_profile_Obj_Lv4PoGate; +extern actor_process_profile_definition g_profile_Obj_Lv4RailWall; +extern actor_process_profile_definition g_profile_Obj_Lv4SlideWall; +extern actor_process_profile_definition g_profile_Obj_Lv4Bridge; +extern actor_process_profile_definition g_profile_Obj_Lv4Chan; +extern actor_process_profile_definition g_profile_Obj_Lv4DigSand; +extern actor_process_profile_definition g_profile_Obj_Lv4Floor; +extern actor_process_profile_definition g_profile_Obj_Lv4Gear; +extern actor_process_profile_definition g_profile_Obj_PRElvtr; +extern actor_process_profile_definition g_profile_Obj_Lv4PRwall; +extern actor_process_profile_definition g_profile_Obj_Lv4Sand; +extern actor_process_profile_definition g_profile_Obj_Lv5FBoard; +extern actor_process_profile_definition g_profile_Obj_IceWall; +extern actor_process_profile_definition g_profile_Obj_Lv5SwIce; +extern actor_process_profile_definition g_profile_Obj_Ychndlr; +extern actor_process_profile_definition g_profile_Obj_YIblltray; +extern actor_process_profile_definition g_profile_Obj_Lv6ChgGate; +extern actor_process_profile_definition g_profile_Obj_Lv6FuriTrap; +extern actor_process_profile_definition g_profile_Obj_Lv6Lblock; +extern actor_process_profile_definition g_profile_Obj_Lv6SwGate; +extern actor_process_profile_definition g_profile_Obj_Lv6SzGate; +extern actor_process_profile_definition g_profile_Obj_Lv6Tenbin; +extern actor_process_profile_definition g_profile_Obj_Lv6TogeRoll; +extern actor_process_profile_definition g_profile_Obj_Lv6TogeTrap; +extern actor_process_profile_definition g_profile_Obj_Lv6bemos; +extern actor_process_profile_definition g_profile_Obj_Lv6bemos2; +extern actor_process_profile_definition g_profile_Obj_Lv6EGate; +extern actor_process_profile_definition g_profile_Obj_Lv6ElevtA; +extern actor_process_profile_definition g_profile_Obj_Lv6SwTurn; +extern actor_process_profile_definition g_profile_Obj_Lv7BsGate; +extern actor_process_profile_definition g_profile_Obj_Lv7PropY; +extern actor_process_profile_definition g_profile_Obj_Lv7Bridge; +extern actor_process_profile_definition g_profile_Obj_Lv8KekkaiTrap; +extern actor_process_profile_definition g_profile_Obj_Lv8Lift; +extern actor_process_profile_definition g_profile_Obj_Lv8OptiLift; +extern actor_process_profile_definition g_profile_Obj_Lv8UdFloor; +extern actor_process_profile_definition g_profile_Obj_Lv9SwShutter; +extern actor_process_profile_definition g_profile_Obj_MagLift; +extern actor_process_profile_definition g_profile_Obj_MagLiftRot; +extern actor_process_profile_definition g_profile_OBJ_MAKI; +extern actor_process_profile_definition g_profile_Obj_MasterSword; +extern actor_process_profile_definition g_profile_Obj_Mato; +extern actor_process_profile_definition g_profile_Obj_MHole; +extern actor_process_profile_definition g_profile_OBJ_MIE; +extern actor_process_profile_definition g_profile_Obj_Mirror6Pole; +extern actor_process_profile_definition g_profile_Obj_MirrorChain; +extern actor_process_profile_definition g_profile_Obj_MirrorSand; +extern actor_process_profile_definition g_profile_Obj_MirrorScrew; +extern actor_process_profile_definition g_profile_Obj_MirrorTable; +extern actor_process_profile_definition g_profile_OBJ_MSIMA; +extern actor_process_profile_definition g_profile_Obj_MvStair; +extern actor_process_profile_definition g_profile_OBJ_MYOGAN; +extern actor_process_profile_definition g_profile_Obj_Nagaisu; +extern actor_process_profile_definition g_profile_Obj_Nan; +extern actor_process_profile_definition g_profile_OBJ_NDOOR; +extern actor_process_profile_definition g_profile_OBJ_NOUGU; +extern actor_process_profile_definition g_profile_OCTHASHI; +extern actor_process_profile_definition g_profile_OBJ_OILTUBO; +extern actor_process_profile_definition g_profile_Obj_Onsen; +extern actor_process_profile_definition g_profile_OBJ_ONSEN_FIRE; +extern actor_process_profile_definition g_profile_Obj_OnsenTaru; +extern actor_process_profile_definition g_profile_Obj_PushDoor; +extern actor_process_profile_definition g_profile_Obj_PDtile; +extern actor_process_profile_definition g_profile_Obj_PDwall; +extern actor_process_profile_definition g_profile_Obj_Picture; +extern actor_process_profile_definition g_profile_Obj_Pillar; +extern actor_process_profile_definition g_profile_OBJ_PLEAF; +extern actor_process_profile_definition g_profile_Obj_poCandle; +extern actor_process_profile_definition g_profile_Obj_poFire; +extern actor_process_profile_definition g_profile_Obj_poTbox; +extern actor_process_profile_definition g_profile_Obj_Prop; +extern actor_process_profile_definition g_profile_OBJ_PUMPKIN; +extern actor_process_profile_definition g_profile_Obj_RCircle; +extern actor_process_profile_definition g_profile_Obj_RfHole; +extern actor_process_profile_definition g_profile_Obj_RiderGate; +extern actor_process_profile_definition g_profile_Obj_RIVERROCK; +extern actor_process_profile_definition g_profile_OBJ_ROCK; +extern actor_process_profile_definition g_profile_Obj_RotBridge; +extern actor_process_profile_definition g_profile_Obj_RotTrap; +extern actor_process_profile_definition g_profile_OBJ_ROTEN; +extern actor_process_profile_definition g_profile_Obj_RotStair; +extern actor_process_profile_definition g_profile_OBJ_RW; +extern actor_process_profile_definition g_profile_Obj_Saidan; +extern actor_process_profile_definition g_profile_Obj_Sakuita; +extern actor_process_profile_definition g_profile_Obj_ItaRope; +extern actor_process_profile_definition g_profile_Obj_SCannon; +extern actor_process_profile_definition g_profile_Obj_SCannonCrs; +extern actor_process_profile_definition g_profile_Obj_SCannonTen; +extern actor_process_profile_definition g_profile_OBJ_SEKIDOOR; +extern actor_process_profile_definition g_profile_OBJ_SEKIZO; +extern actor_process_profile_definition g_profile_OBJ_SEKIZOA; +extern actor_process_profile_definition g_profile_Obj_Shield; +extern actor_process_profile_definition g_profile_Obj_SM_DOOR; +extern actor_process_profile_definition g_profile_Obj_SmallKey; +extern actor_process_profile_definition g_profile_Obj_SmgDoor; +extern actor_process_profile_definition g_profile_Obj_Smoke; +extern actor_process_profile_definition g_profile_OBJ_SMTILE; +extern actor_process_profile_definition g_profile_Obj_SmWStone; +extern actor_process_profile_definition g_profile_Tag_SnowEff; +extern actor_process_profile_definition g_profile_Obj_SnowSoup; +extern actor_process_profile_definition g_profile_OBJ_SO; +extern actor_process_profile_definition g_profile_Obj_SpinLift; +extern actor_process_profile_definition g_profile_OBJ_SSDRINK; +extern actor_process_profile_definition g_profile_OBJ_SSITEM; +extern actor_process_profile_definition g_profile_Obj_StairBlock; +extern actor_process_profile_definition g_profile_Obj_Stone; +extern actor_process_profile_definition g_profile_Obj_Stopper; +extern actor_process_profile_definition g_profile_Obj_Stopper2; +extern actor_process_profile_definition g_profile_OBJ_SUISYA; +extern actor_process_profile_definition g_profile_OBJ_SW; +extern actor_process_profile_definition g_profile_Obj_SwBallA; +extern actor_process_profile_definition g_profile_Obj_SwBallB; +extern actor_process_profile_definition g_profile_Obj_SwBallC; +extern actor_process_profile_definition g_profile_Obj_SwLight; +extern actor_process_profile_definition g_profile_Obj_SwChain; +extern actor_process_profile_definition g_profile_Obj_SwHang; +extern actor_process_profile_definition g_profile_Obj_Sword; +extern actor_process_profile_definition g_profile_Obj_Swpush2; +extern actor_process_profile_definition g_profile_Obj_SwSpinner; +extern actor_process_profile_definition g_profile_Obj_SwTurn; +extern actor_process_profile_definition g_profile_Obj_SyRock; +extern actor_process_profile_definition g_profile_Obj_SZbridge; +extern actor_process_profile_definition g_profile_Obj_TaFence; +extern actor_process_profile_definition g_profile_Obj_Table; +extern actor_process_profile_definition g_profile_Obj_TakaraDai; +extern actor_process_profile_definition g_profile_OBJ_TATIGI; +extern actor_process_profile_definition g_profile_Obj_Ten; +extern actor_process_profile_definition g_profile_Obj_TestCube; +extern actor_process_profile_definition g_profile_Obj_Gake; + +extern actor_process_profile_definition g_profile_Obj_THASHI; +extern actor_process_profile_definition g_profile_Obj_TDoor; +extern actor_process_profile_definition g_profile_Obj_TimeFire; +extern actor_process_profile_definition g_profile_OBJ_TKS; +extern actor_process_profile_definition g_profile_Obj_TMoon; +extern actor_process_profile_definition g_profile_Obj_ToaruMaki; +extern actor_process_profile_definition g_profile_OBJ_TOBY; +extern actor_process_profile_definition g_profile_Obj_TobyHouse; +extern actor_process_profile_definition g_profile_Obj_TogeTrap; +extern actor_process_profile_definition g_profile_Obj_Tombo; +extern actor_process_profile_definition g_profile_Obj_Tornado; +extern actor_process_profile_definition g_profile_Obj_Tornado2; +extern actor_process_profile_definition g_profile_OBJ_TP; +extern actor_process_profile_definition g_profile_TREESH; +extern actor_process_profile_definition g_profile_Obj_TwGate; +extern actor_process_profile_definition g_profile_OBJ_UDOOR; +extern actor_process_profile_definition g_profile_OBJ_USAKU; +extern actor_process_profile_definition g_profile_Obj_VolcGnd; +extern actor_process_profile_definition g_profile_Obj_VolcanicBall; +extern actor_process_profile_definition g_profile_Obj_VolcanicBomb; +extern actor_process_profile_definition g_profile_Obj_KakarikoBrg; +extern actor_process_profile_definition g_profile_Obj_OrdinBrg; +extern actor_process_profile_definition g_profile_Obj_WtGate; +extern actor_process_profile_definition g_profile_Obj_WaterPillar; +extern actor_process_profile_definition g_profile_Obj_WaterFall; +extern actor_process_profile_definition g_profile_Obj_Wchain; +extern actor_process_profile_definition g_profile_Obj_WdStick; +extern actor_process_profile_definition g_profile_OBJ_WEB0; +extern actor_process_profile_definition g_profile_OBJ_WEB1; +extern actor_process_profile_definition g_profile_Obj_WellCover; +extern actor_process_profile_definition g_profile_OBJ_WFLAG; +extern actor_process_profile_definition g_profile_Obj_WindStone; +extern actor_process_profile_definition g_profile_Obj_Window; +extern actor_process_profile_definition g_profile_Obj_WoodPendulum; +extern actor_process_profile_definition g_profile_Obj_WoodStatue; +extern actor_process_profile_definition g_profile_Obj_WoodenSword; +extern actor_process_profile_definition g_profile_OBJ_YBAG; +extern actor_process_profile_definition g_profile_OBJ_YSTONE; +extern actor_process_profile_definition g_profile_Obj_ZoraCloth; +extern actor_process_profile_definition g_profile_Obj_ZDoor; +extern actor_process_profile_definition g_profile_Obj_zrTurara; +extern actor_process_profile_definition g_profile_Obj_zrTuraraRc; +extern actor_process_profile_definition g_profile_ZRA_MARK; +extern actor_process_profile_definition g_profile_OBJ_ZRAFREEZE; +extern actor_process_profile_definition g_profile_Obj_ZraRock; +extern actor_process_profile_definition g_profile_PASSER_MNG; +extern actor_process_profile_definition g_profile_PERU; +extern actor_process_profile_definition g_profile_PPolamp; +extern actor_process_profile_definition g_profile_SKIP2D; +extern actor_process_profile_definition g_profile_START_AND_GOAL; +extern actor_process_profile_definition g_profile_SwBall; +extern actor_process_profile_definition g_profile_SwLBall; +extern actor_process_profile_definition g_profile_SwTime; +extern actor_process_profile_definition g_profile_Tag_Lv6Gate; +extern actor_process_profile_definition g_profile_Tag_Lv7Gate; +extern actor_process_profile_definition g_profile_Tag_Lv8Gate; +extern actor_process_profile_definition g_profile_Tag_TWGate; +extern actor_process_profile_definition g_profile_Tag_Arena; +extern actor_process_profile_definition g_profile_Tag_Assist; +extern actor_process_profile_definition g_profile_TAG_BTLITM; +extern actor_process_profile_definition g_profile_Tag_ChgRestart; +extern actor_process_profile_definition g_profile_TAG_CSW; +extern actor_process_profile_definition g_profile_Tag_Escape; +extern actor_process_profile_definition g_profile_Tag_FWall; +extern actor_process_profile_definition g_profile_TAG_GRA; +extern actor_process_profile_definition g_profile_TAG_GUARD; +extern actor_process_profile_definition g_profile_Tag_Instruction; +extern actor_process_profile_definition g_profile_Tag_KagoFall; +extern actor_process_profile_definition g_profile_Tag_LightBall; +extern actor_process_profile_definition g_profile_TAG_LV5SOUP; +extern actor_process_profile_definition g_profile_Tag_Lv6CstaSw; +extern actor_process_profile_definition g_profile_Tag_Mmsg; +extern actor_process_profile_definition g_profile_Tag_Mwait; +extern actor_process_profile_definition g_profile_TAG_MYNA2; +extern actor_process_profile_definition g_profile_TAG_MNLIGHT; +extern actor_process_profile_definition g_profile_TAG_PATI; +extern actor_process_profile_definition g_profile_Tag_poFire; +extern actor_process_profile_definition g_profile_TAG_QS; +extern actor_process_profile_definition g_profile_Tag_RetRoom; +extern actor_process_profile_definition g_profile_Tag_RiverBack; +extern actor_process_profile_definition g_profile_Tag_RmbitSw; +extern actor_process_profile_definition g_profile_Tag_Schedule; +extern actor_process_profile_definition g_profile_Tag_SetBall; +extern actor_process_profile_definition g_profile_Tag_Restart; +extern actor_process_profile_definition g_profile_TAG_SHOPCAM; +extern actor_process_profile_definition g_profile_TAG_SHOPITM; +extern actor_process_profile_definition g_profile_Tag_SmkEmt; +extern actor_process_profile_definition g_profile_Tag_Spinner; +extern actor_process_profile_definition g_profile_Tag_Sppath; +extern actor_process_profile_definition g_profile_TAG_SSDRINK; +extern actor_process_profile_definition g_profile_Tag_Stream; +extern actor_process_profile_definition g_profile_Tag_TheBHint; +extern actor_process_profile_definition g_profile_Tag_WaraHowl; +extern actor_process_profile_definition g_profile_Tag_WatchGe; +extern actor_process_profile_definition g_profile_Tag_WaterFall; +extern actor_process_profile_definition g_profile_Tag_Wljump; +extern actor_process_profile_definition g_profile_TAG_YAMI; +extern actor_process_profile_definition g_profile_TALK; +extern actor_process_profile_definition g_profile_TBOX_SW; +extern actor_process_profile_definition g_profile_TITLE; +extern actor_process_profile_definition g_profile_WarpBug; +#endif extern process_profile_definition* g_fpcPfLst_ProfileList[]; diff --git a/include/global.h b/include/global.h index 8be30974cc..9cca717013 100644 --- a/include/global.h +++ b/include/global.h @@ -83,6 +83,24 @@ extern int __abs(int); void* __memcpy(void*, const void*, int); #endif +#ifdef _MSVC_LANG +inline int __builtin_clz(unsigned int v) { + int count = 32; + while (v != 0) { + count--; + v >>= 1; + } + return count; +} + +#define COMPOUND_LITERAL(x) +#define M_PI 3.14159265358979323846f +#else + +#define COMPOUND_LITERAL(x) (x) + +#endif + #define FAST_DIV(x, n) (x >> (n / 2)) #define SQUARE(x) ((x) * (x)) @@ -145,4 +163,23 @@ static const float INF = 2000000000.0f; #define UNSET_FLAG(var, flag, type) (var) &= ~(flag) #endif +#ifdef _MSVC_LANG + template + inline constexpr auto MultiCharLiteral(const char (&buf)[N]) { + // static_assert(buf[0] == '\'' && buf[N - 2] == '\''); // can't constexpr strings, just pray + constexpr int len = N - 1; + static_assert(len >= 2 && len <= 10); + + unsigned long long out = 0; + for (int i = 1; i < len - 1; i++) { + out = (out << 8) | ((unsigned long long)buf[i]); + } + return out; + } + + #define MULTI_CHAR(x) MultiCharLiteral(#x) +#else + #define MULTI_CHAR(x) MultiCharLiteral(#x) +#endif + #endif diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 35e81f0059..4478098064 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -221,7 +221,7 @@ private: /* 0x14 */ J3DAnmCluster* mpAnm; }; -class J3DTransformInfo; +struct J3DTransformInfo; class mDoExt_AnmRatioPack { public: @@ -832,7 +832,7 @@ intptr_t mDoExt_getSafeZeldaHeapSize(); JKRHeap* mDoExt_createHostIOHeap(u32, JKRHeap*); #endif -struct JUTFont; +class JUTFont; JUTFont* mDoExt_getMesgFont(); JUTFont* mDoExt_getSubFont(); JUTFont* mDoExt_getRubyFont(); diff --git a/include/m_Do/m_Do_graphic.h b/include/m_Do/m_Do_graphic.h index 861575787b..9e1cb18436 100644 --- a/include/m_Do/m_Do_graphic.h +++ b/include/m_Do/m_Do_graphic.h @@ -93,7 +93,10 @@ public: } static int startFadeOut(int param_0) { return JFWDisplay::getManager()->startFadeOut(param_0); } - static int startFadeIn(int param_0) { return JFWDisplay::getManager()->startFadeIn(param_0); } + static int startFadeIn(int param_0) { + printf("[DIAG] mDoGph_gInf_c::startFadeIn START\n"); + fflush(stdout); + return JFWDisplay::getManager()->startFadeIn(param_0); } static void setFadeColor(JUtility::TColor& color) { mFader->setColor(color); } static void setClearColor(JUtility::TColor color) { JFWDisplay::getManager()->setClearColor(color); } static void setBackColor(GXColor& color) { mBackColor = color; } diff --git a/include/m_Do/m_Do_lib.h b/include/m_Do/m_Do_lib.h index 31b5b5f700..660f96274e 100644 --- a/include/m_Do/m_Do_lib.h +++ b/include/m_Do/m_Do_lib.h @@ -11,8 +11,8 @@ struct ResTIMG; struct mDoLib_clipper { static void setup(f32, f32, f32, f32); - static void changeFar(f32 far) { - mClipper.setFar(far); + static void changeFar(f32 far_) { + mClipper.setFar(far_); mClipper.calcViewFrustum(); } diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index aa8e3c7eca..01acd05b50 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -4,6 +4,7 @@ #include "SSystem/SComponent/c_sxyz.h" #include "SSystem/SComponent/c_xyz.h" #include +#include "JSystem/JMath/JMath.h" extern u8 g_printCurrentHeapDebug; extern u8 g_printOtherHeapDebug; diff --git a/include/revolution/types.h b/include/revolution/types.h index 2434b54085..355768087e 100644 --- a/include/revolution/types.h +++ b/include/revolution/types.h @@ -5,8 +5,13 @@ typedef signed char s8; typedef unsigned char u8; typedef signed short int s16; typedef unsigned short int u16; +#if TARGET_PC +typedef signed int s32; +typedef unsigned int u32; +#else typedef signed long s32; typedef unsigned long u32; +#endif typedef signed long long int s64; typedef unsigned long long int u64; diff --git a/src/DynamicLink.cpp b/src/DynamicLink.cpp index 52cf257970..83316581e5 100644 --- a/src/DynamicLink.cpp +++ b/src/DynamicLink.cpp @@ -184,8 +184,10 @@ static u32 calcSum2(u16 const* data, u32 size) { bool DynamicModuleControl::do_load() { if (mModule != NULL) { + printf("[DIAG] DynamicModuleControl::do_load(%s) already loaded\n", mName); fflush(stdout); return true; } + printf("[DIAG] DynamicModuleControl::do_load(%s) loading... sArchive=%p sFileCache=%p\n", mName, sArchive, sFileCache); fflush(stdout); JKRExpHeap* heap = mDoExt_getArchiveHeap(); s32 i = 0; while (true) { @@ -278,6 +280,7 @@ bool DynamicModuleControl::do_load() { break; } } + printf("[DIAG] DynamicModuleControl::do_load(%s) SUCCESS mModule=%p type=%d size=%d\n", mName, mModule, mResourceType, mSize); fflush(stdout); return true; } @@ -453,14 +456,6 @@ const char* DynamicModuleControl::getModuleTypeString() const { return strings[mResourceType & 3]; } -extern "C" void ModuleProlog() { - /* empty function */ -} - -extern "C" void ModuleEpilog() { - /* empty function */ -} - extern "C" void ModuleUnresolved() { // "\nError: Unlinked function was called.\n" OSReport_Error("\nError: リンクされていない関数が呼び出されました.\n"); diff --git a/src/JSystem/J2DGraph/J2DMaterialFactory.cpp b/src/JSystem/J2DGraph/J2DMaterialFactory.cpp index 8c45bff19e..e7a3639844 100644 --- a/src/JSystem/J2DGraph/J2DMaterialFactory.cpp +++ b/src/JSystem/J2DGraph/J2DMaterialFactory.cpp @@ -178,7 +178,11 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par } JUtility::TColor J2DMaterialFactory::newMatColor(int param_0, int param_1) const { +#ifdef __MWERKS__ JUtility::TColor local_20 = (GXColor){0xff,0xff,0xff,0xff}; +#else + JUtility::TColor local_20 = GXColor{0xff,0xff,0xff,0xff}; +#endif J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; if (iVar2->field_0x8[param_1] != 0xffff) { return field_0x10[iVar2->field_0x8[param_1]]; @@ -276,7 +280,7 @@ J2DGXColorS10 J2DMaterialFactory::newTevColor(int param_0, int param_1) const { } JUtility::TColor J2DMaterialFactory::newTevKColor(int param_0, int param_1) const { - JUtility::TColor local_20 = (GXColor){0xFF, 0xFF, 0xFF, 0xFF}; + JUtility::TColor local_20 = COMPOUND_LITERAL(GXColor){0xFF, 0xFF, 0xFF, 0xFF}; J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; if (iVar2->field_0x4a[param_1] != 0xffff) { return field_0x3c[iVar2->field_0x4a[param_1]]; diff --git a/src/JSystem/J3DGraphAnimator/J3DAnimation.cpp b/src/JSystem/J3DGraphAnimator/J3DAnimation.cpp index 6b9a2d2250..94653f1bda 100644 --- a/src/JSystem/J3DGraphAnimator/J3DAnimation.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DAnimation.cpp @@ -552,6 +552,32 @@ inline f32 J3DHermiteInterpolation(__REGISTER f32 pp1, __REGISTER s16 const* pp2 fsubs fout, fout, ff0 } // clang-format on + return fout; +#else + f32 time1 = (f32)*pp2; + f32 value1 = (f32)*pp3; + f32 tangent1 = (f32)*pp4; + f32 time2 = (f32)*pp5; + f32 value2 = (f32)*pp6; + f32 tangent2 = (f32)*pp7; + + f32 duration = time2 - time1; + f32 t = (pp1 - time1) / duration; + f32 t2 = t * t; + + f32 dv = value2 - value1; + f32 ff4 = dv - duration * tangent1; + + f32 ff0 = tangent2 * duration + value1; + ff0 = ff0 - value2; + ff0 = ff0 - ff4; + ff0 = t2 * ff0; + + f32 fout = duration * tangent1 + ff0; + fout = fout * t + value1; + fout = ff4 * t2 + fout; + fout = fout - ff0; + return fout; #endif } diff --git a/src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp b/src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp index a1e9ba0243..8b881d27d0 100644 --- a/src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp @@ -15,11 +15,11 @@ Mtx* J3DMtxBuffer::sNoUseDrawMtxPtr = &J3DMtxBuffer::sNoUseDrawMtx; Mtx33* J3DMtxBuffer::sNoUseNrmMtxPtr = &J3DMtxBuffer::sNoUseNrmMtx; // force .sdata2 order -f32 dummy1() { +static f32 dummy1() { return 1.0f; } -f32 dummy0() { +static f32 dummy0() { return 0.0f; } diff --git a/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp b/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp index d9d098c66d..93970e3c4f 100644 --- a/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp +++ b/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp @@ -464,7 +464,11 @@ u32 J3DMaterialFactory::calcSizeLockedMaterial(J3DMaterial* i_material, int i_id } J3DGXColor J3DMaterialFactory::newMatColor(int i_idx, int i_no) const { + #ifdef __MWERKS__ J3DGXColor dflt = (GXColor){0xff, 0xff, 0xff, 0xff}; + #else + J3DGXColor dflt = GXColor{0xff, 0xff, 0xff, 0xff}; + #endif J3DMaterialInitData* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]]; if (mtl_init_data->mMatColorIdx[i_no] != 0xffff) { return mpMatColor[mtl_init_data->mMatColorIdx[i_no]]; @@ -493,7 +497,11 @@ J3DColorChan J3DMaterialFactory::newColorChan(int i_idx, int i_no) const { } J3DGXColor J3DMaterialFactory::newAmbColor(int i_idx, int i_no) const { + #ifdef __MWERKS__ J3DGXColor dflt = (GXColor){0x32, 0x32, 0x32, 0x32}; + #else + J3DGXColor dflt = GXColor{0x32, 0x32, 0x32, 0x32}; + #endif J3DMaterialInitData* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]]; if (mtl_init_data->mAmbColorIdx[i_no] != 0xffff) { return mpAmbColor[mtl_init_data->mAmbColorIdx[i_no]]; @@ -570,7 +578,11 @@ J3DGXColorS10 J3DMaterialFactory::newTevColor(int i_idx, int i_no) const { } J3DGXColor J3DMaterialFactory::newTevKColor(int i_idx, int i_no) const { + #ifdef __MWERKS__ J3DGXColor dflt = (GXColor){0xff, 0xff, 0xff, 0xff}; + #else + J3DGXColor dflt = GXColor{0xff, 0xff, 0xff, 0xff}; + #endif J3DMaterialInitData* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]]; if (mtl_init_data->mTevKColorIdx[i_no] != 0xffff) { return mpTevKColor[mtl_init_data->mTevKColorIdx[i_no]]; diff --git a/src/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp b/src/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp index 47815e881e..b00b08ff68 100644 --- a/src/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp +++ b/src/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp @@ -167,7 +167,11 @@ J3DMaterial* J3DMaterialFactory_v21::create(J3DMaterial* i_material, int i_idx, } J3DGXColor J3DMaterialFactory_v21::newMatColor(int i_idx, int i_no) const { + #ifdef __MWERKS__ J3DGXColor defaultColor = (GXColor){0xff, 0xff, 0xff, 0xff}; + #else + J3DGXColor defaultColor = GXColor{0xff, 0xff, 0xff, 0xff}; + #endif J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]]; if (mtl_init_data->mMatColorIdx[i_no] != 0xffff) { return J3DGXColor(mpMatColor[mtl_init_data->mMatColorIdx[i_no]]); @@ -262,7 +266,11 @@ J3DGXColorS10 J3DMaterialFactory_v21::newTevColor(int i_idx, int i_no) const { } J3DGXColor J3DMaterialFactory_v21::newTevKColor(int i_idx, int param_1) const { + #ifdef __MWERKS__ J3DGXColor defaultColor = (GXColor){0xff, 0xff, 0xff, 0xff}; + #else + J3DGXColor defaultColor = GXColor{0xff, 0xff, 0xff, 0xff}; + #endif J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]]; if (mtl_init_data->mTevKColorIdx[param_1] != 0xffff) { return J3DGXColor(mpTevKColor[mtl_init_data->mTevKColorIdx[param_1]]); diff --git a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp index 2fbe4a0c77..f1ed201fc8 100644 --- a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp +++ b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp @@ -135,7 +135,7 @@ u32 J3DModelLoader::calcLoadBinaryDisplayListSize(const void* stream, u32 flags) case 'MDL3': size += calcSizeMaterialDL((const J3DMaterialDLBlock*)nextBlock, flags); break; - case 'MAT3': { + case 'MAT3': { u32 flags2 = (J3DMLF_21 | J3DMLF_Material_PE_Full | J3DMLF_Material_Color_LightOn); flags2 |= (u32)flags & (J3DMLF_Material_UseIndirect | J3DMLF_26); mpMaterialBlock = (const J3DMaterialBlock*)nextBlock; diff --git a/src/JSystem/JAudio2/JASSeqParser.cpp b/src/JSystem/JAudio2/JASSeqParser.cpp index e68d880e17..415f5d6082 100644 --- a/src/JSystem/JAudio2/JASSeqParser.cpp +++ b/src/JSystem/JAudio2/JASSeqParser.cpp @@ -721,10 +721,10 @@ s32 JASSeqParser::cmdReg(JASTrack* param_0, u32* param_1) { case 7: r30 ^= readReg(param_0, r29); break; - case 8: + case 8: { static JMath::TRandom_ oRandom(0); r30 = (oRandom.get_bit32() >> 9) % r30; - break; + } break; case 9: r30 = readReg(param_0, r29) << r30; break; diff --git a/src/JSystem/JFramework/JFWDisplay.cpp b/src/JSystem/JFramework/JFWDisplay.cpp index eb40c484e4..41f53b1a01 100644 --- a/src/JSystem/JFramework/JFWDisplay.cpp +++ b/src/JSystem/JFramework/JFWDisplay.cpp @@ -1,20 +1,21 @@ -#include "JSystem/JSystem.h" // IWYU pragma: keep +#include "JSystem/JSystem.h" // IWYU pragma: keep -#include "JSystem/JFramework/JFWDisplay.h" +#include +#include +#include #include "JSystem/J2DGraph/J2DOrthoGraph.h" +#include "JSystem/JFramework/JFWDisplay.h" #include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JUtility/JUTConsole.h" #include "JSystem/JUtility/JUTDbPrint.h" #include "JSystem/JUtility/JUTProcBar.h" -#include -#include #include "global.h" -#include +#include "aurora/aurora.h" void JFWDisplay::ctor_subroutine(bool enableAlpha) { mEnableAlpha = enableAlpha; mClamp = GX_CLAMP_TOP | GX_CLAMP_BOTTOM; - mClearColor = JUtility::TColor(0, 0, 0, 0); + mClearColor = JUtility::TColor(255, 0, 128, 255); mZClear = 0xFFFFFF; mGamma = 0; mFader = NULL; @@ -199,10 +200,10 @@ void JFWDisplay::endGX() { J2DOrthoGraph ortho(0.0f, 0.0f, width, height, -1.0f, 1.0f); - if (mFader != NULL) { - ortho.setPort(); - mFader->control(); - } + //if (mFader != NULL) { + // ortho.setPort(); + // mFader->control(); + //} ortho.setPort(); JUTDbPrint::getManager()->flush(); @@ -221,6 +222,7 @@ void JFWDisplay::endGX() { } void JFWDisplay::beginRender() { + aurora_begin_frame(); if (field_0x40) { JUTProcBar::getManager()->wholeLoopEnd(); } @@ -298,6 +300,7 @@ void JFWDisplay::endRender() { JUTProcBar::getManager()->cpuStart(); calcCombinationRatio(); + aurora_end_frame(); } void JFWDisplay::endFrame() { @@ -325,7 +328,8 @@ void JFWDisplay::endFrame() { } if (field_0x40) { - static u32 prevFrame = VIGetRetraceCount();; + static u32 prevFrame = VIGetRetraceCount(); + ; u32 retrace_cnt = VIGetRetraceCount(); u32 r28 = retrace_cnt - prevFrame; JUTProcBar::getManager()->setCostFrame(retrace_cnt - prevFrame); @@ -340,7 +344,10 @@ void JFWDisplay::waitBlanking(int param_0) { } static void waitForTick(u32 p1, u16 p2) { - if (p1 != 0) { + + + if (p1 != 0) + { static OSTime nextTick = OSGetTime(); OSTime time = OSGetTime(); while (time < nextTick) { @@ -348,18 +355,19 @@ static void waitForTick(u32 p1, u16 p2) { time = OSGetTime(); } nextTick = time + p1; - } - else { + } else { static u32 nextCount = VIGetRetraceCount(); u32 uVar1 = (p2 == 0) ? 1 : p2; OSMessage msg; do { - if (!OSReceiveMessage(JUTVideo::getManager()->getMessageQueue(), &msg, OS_MESSAGE_BLOCK)) { + if (!OSReceiveMessage(JUTVideo::getManager()->getMessageQueue(), &msg, + OS_MESSAGE_BLOCK)) + { msg = 0; } } while (((intptr_t)msg - (intptr_t)nextCount) < 0); nextCount = (intptr_t)msg + uVar1; - } + } } JSUList JFWAlarm::sList(false); @@ -520,8 +528,13 @@ static void JFWDrawDoneAlarm() { static void JFWGXAbortAlarmHandler(OSAlarm* param_0, OSContext* param_1) { diagnoseGpHang(); GXAbortFrame(); +#ifdef TARGET_PC + GXCmd1u8(0x61); + GXCmd1u32(0x5800000F); +#else GXWGFifo.u8 = 0x61; GXWGFifo.u32 = 0x5800000F; +#endif GXFifoObj* fifo = GXGetCPUFifo(); if (fifo != NULL) { diff --git a/src/JSystem/JKernel/JKRAram.cpp b/src/JSystem/JKernel/JKRAram.cpp index ffea3d9af7..a69ac99fba 100644 --- a/src/JSystem/JKernel/JKRAram.cpp +++ b/src/JSystem/JKernel/JKRAram.cpp @@ -351,7 +351,8 @@ int decompSZS_subroutine(u8* src, u8* dest) { } SYaz0Header* header = (SYaz0Header*)src; - endPtr = dest + (header->length - fileOffset); + u32 decompressedLength = JKRDecompExpandSize(src); + endPtr = dest + (decompressedLength - fileOffset); if (endPtr > dest + maxDest) { endPtr = dest + maxDest; } diff --git a/src/JSystem/JKernel/JKRAramArchive.cpp b/src/JSystem/JKernel/JKRAramArchive.cpp index 811978caa0..f8818c7eca 100644 --- a/src/JSystem/JKernel/JKRAramArchive.cpp +++ b/src/JSystem/JKernel/JKRAramArchive.cpp @@ -31,8 +31,8 @@ JKRAramArchive::~JKRAramArchive() { if (mArcInfoBlock != NULL) { SDIFileEntry* entry = mFiles; for (int i = 0; i < mArcInfoBlock->num_file_entries; i++) { - if (entry->data != NULL) { - JKRFreeToHeap(mHeap, entry->data); + if (JKAR_DATA(entry) != NULL) { + JKRFreeToHeap(mHeap, JKAR_DATA(entry)); } entry++; } @@ -135,6 +135,9 @@ bool JKRAramArchive::open(s32 entryNum) { mFiles = (SDIFileEntry*)((u8*)mArcInfoBlock + mArcInfoBlock->file_entry_offset); mStringTable = (char*)((u8*)mArcInfoBlock + mArcInfoBlock->string_table_offset); mExpandedSize = NULL; +#if TARGET_PC + initFileDataPointers(); +#endif u8 compressedFiles = 0; // maybe a check for if the last file is compressed? @@ -199,7 +202,7 @@ void* JKRAramArchive::fetchResource(SDIFileEntry* pEntry, u32* pOutSize) { } JKRCompression compression = JKRConvertAttrToCompressionType(u8(pEntry->type_flags_and_name_offset >> 24)); - if (pEntry->data == NULL) { + if (JKAR_DATA(pEntry) == NULL) { u32 size = JKRAramArchive::fetchResource_subroutine( pEntry->data_offset + mBlock->getAddress(), pEntry->data_size, mHeap, compression, &outBuf); @@ -209,7 +212,7 @@ void* JKRAramArchive::fetchResource(SDIFileEntry* pEntry, u32* pOutSize) { return NULL; } - pEntry->data = outBuf; + JKAR_DATA(pEntry) = outBuf; if (compression == COMPRESSION_YAZ0) { this->setExpandSize(pEntry, *pOutSize); } @@ -221,7 +224,7 @@ void* JKRAramArchive::fetchResource(SDIFileEntry* pEntry, u32* pOutSize) { } } - return pEntry->data; + return JKAR_DATA(pEntry); } void* JKRAramArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* pEntry, @@ -233,7 +236,7 @@ void* JKRAramArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* } JKRCompression compression = JKRConvertAttrToCompressionType(u8(pEntry->type_flags_and_name_offset >> 24)); - if (pEntry->data == NULL) { + if (JKAR_DATA(pEntry) == NULL) { bufferSize = (s32)ALIGN_PREV(bufferSize, 0x20); size = JKRAramArchive::fetchResource_subroutine(pEntry->data_offset + mBlock->getAddress(), size, (u8*)buffer, bufferSize, compression); @@ -247,7 +250,7 @@ void* JKRAramArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* if (size > bufferSize) { size = bufferSize; } - JKRHeap::copyMemory(buffer, pEntry->data, size); + JKRHeap::copyMemory(buffer, JKAR_DATA(pEntry), size); } if (resourceSize != NULL) { diff --git a/src/JSystem/JKernel/JKRAramPiece.cpp b/src/JSystem/JKernel/JKRAramPiece.cpp index e74cf5d5c7..d0b55ba07b 100644 --- a/src/JSystem/JKernel/JKRAramPiece.cpp +++ b/src/JSystem/JKernel/JKRAramPiece.cpp @@ -6,7 +6,7 @@ #include "JSystem/JUtility/JUTException.h" #include -JKRAMCommand* JKRAramPiece::prepareCommand(int direction, u32 src, u32 dst, u32 length, +JKRAMCommand* JKRAramPiece::prepareCommand(int direction, uintptr_t src, uintptr_t dst, u32 length, JKRAramBlock* block, JKRAMCommand::AsyncCallback callback) { JKRAMCommand* command = new (JKRGetSystemHeap(), -4) JKRAMCommand(); @@ -27,7 +27,7 @@ JSUList JKRAramPiece::sAramPieceCommandList; OSMutex JKRAramPiece::mMutex; -JKRAMCommand* JKRAramPiece::orderAsync(int direction, u32 source, u32 destination, u32 length, +JKRAMCommand* JKRAramPiece::orderAsync(int direction, uintptr_t source, uintptr_t destination, u32 length, JKRAramBlock* block, JKRAMCommand::AsyncCallback callback) { lock(); if ((source & 0x1f) != 0 || (destination & 0x1f) != 0) { @@ -73,7 +73,7 @@ BOOL JKRAramPiece::sync(JKRAMCommand* command, int is_non_blocking) { return TRUE; } -BOOL JKRAramPiece::orderSync(int direction, u32 source, u32 destination, u32 length, +BOOL JKRAramPiece::orderSync(int direction, uintptr_t source, uintptr_t destination, u32 length, JKRAramBlock* block) { lock(); @@ -97,7 +97,7 @@ void JKRAramPiece::startDMA(JKRAMCommand* command) { command->mDst, command->mDataLength, JKRAramPiece::doneDMA); } -void JKRAramPiece::doneDMA(u32 requestAddress) { +void JKRAramPiece::doneDMA(uintptr_t requestAddress) { JKRAMCommand* command = (JKRAMCommand*)requestAddress; if (command->mTransferDirection == 1) { diff --git a/src/JSystem/JKernel/JKRArchivePri.cpp b/src/JSystem/JKernel/JKRArchivePri.cpp index 375e297c37..21ad688a44 100644 --- a/src/JSystem/JKernel/JKRArchivePri.cpp +++ b/src/JSystem/JKernel/JKRArchivePri.cpp @@ -5,6 +5,10 @@ #include #include +#if TARGET_PC +#include +#endif + u32 JKRArchive::sCurrentDirID; JKRArchive::JKRArchive() { @@ -30,7 +34,14 @@ JKRArchive::JKRArchive(s32 entryNumber, JKRArchive::EMountMode mountMode) { } } -JKRArchive::~JKRArchive() {} +JKRArchive::~JKRArchive() { +#if TARGET_PC + if (mFileData != nullptr) { + mHeap->free(mFileData); + mFileData = nullptr; + } +#endif +} bool JKRArchive::isSameName(JKRArchive::CArcName& name, u32 nameOffset, u16 nameHash) const { u16 hash = name.getHash(); @@ -143,7 +154,7 @@ JKRArchive::SDIFileEntry* JKRArchive::findNameResource(const char* name) const { JKRArchive::SDIFileEntry* JKRArchive::findPtrResource(const void* resource) const { SDIFileEntry* fileEntry = mFiles; for (int i = 0; i < mArcInfoBlock->num_file_entries; i++) { - if (fileEntry->data == resource) { + if (JKAR_DATA(fileEntry) == resource) { return fileEntry; } fileEntry++; @@ -225,3 +236,31 @@ u32 JKRArchive::getExpandSize(SDIFileEntry* fileEntry) const { return mExpandedSize[index]; } + +#if TARGET_PC +void*& JKRArchive::getFileDataPointer(int idx) const { + assert(mArcInfoBlock); + assert(idx < mArcInfoBlock->num_file_entries); + assert(mFileData); + + return mFileData[idx]; +} + +void JKRArchive::initFileDataPointers() { + assert(mArcInfoBlock); + assert(mFiles); + + if (mFileData != nullptr) { + mHeap->free(mFileData); + } + + mFileData = static_cast( + mHeap->alloc(mArcInfoBlock->num_file_entries * sizeof(void*), alignof(void*))); + + memset(mFileData, 0, mArcInfoBlock->num_file_entries * sizeof(void*)); + + for (u32 i = 0; i < mArcInfoBlock->num_file_entries; i++) { + mFiles[i].index = i; + } +} +#endif \ No newline at end of file diff --git a/src/JSystem/JKernel/JKRArchivePub.cpp b/src/JSystem/JKernel/JKRArchivePub.cpp index 1d7f2accba..912fb16c6b 100644 --- a/src/JSystem/JKernel/JKRArchivePub.cpp +++ b/src/JSystem/JKernel/JKRArchivePub.cpp @@ -248,9 +248,9 @@ void JKRArchive::removeResourceAll() { if (mArcInfoBlock && mMountMode != MOUNT_MEM) { SDIFileEntry* fileEntry = mFiles; for (int i = 0; i < mArcInfoBlock->num_file_entries; i++) { - if (fileEntry->data) { - JKRFreeToHeap(mHeap, fileEntry->data); - fileEntry->data = NULL; + if (JKAR_DATA(fileEntry)) { + JKRFreeToHeap(mHeap, JKAR_DATA(fileEntry)); + JKAR_DATA(fileEntry) = NULL; } fileEntry++; } @@ -263,7 +263,7 @@ bool JKRArchive::removeResource(void* resource) { if (fileEntry == NULL) return false; - fileEntry->data = NULL; + JKAR_DATA(fileEntry) = NULL; JKRFreeToHeap(mHeap, resource); return true; } @@ -274,7 +274,7 @@ bool JKRArchive::detachResource(void* resource) { if (fileEntry == NULL) return false; - fileEntry->data = NULL; + JKAR_DATA(fileEntry) = NULL; return true; } diff --git a/src/JSystem/JKernel/JKRCompArchive.cpp b/src/JSystem/JKernel/JKRCompArchive.cpp index 8a1577f592..7c5217684b 100644 --- a/src/JSystem/JKernel/JKRCompArchive.cpp +++ b/src/JSystem/JKernel/JKRCompArchive.cpp @@ -33,8 +33,8 @@ JKRCompArchive::~JKRCompArchive() { SDIFileEntry* file = mFiles; for (int i = 0; i < mArcInfoBlock->num_file_entries; i++) { u32 flags = file->type_flags_and_name_offset >> 24; - if ((flags & 16) == 0 && file->data != NULL) { - JKRFreeToHeap(mHeap, file->data); + if ((flags & 16) == 0 && JKAR_DATA(file) != NULL) { + JKRFreeToHeap(mHeap, JKAR_DATA(file)); } file++; @@ -176,6 +176,11 @@ bool JKRCompArchive::open(s32 entryNum) { field_0x6c = arcHeader->header_length + arcHeader->file_data_offset; break; } + +#if TARGET_PC + initFileDataPointers(); +#endif + mExpandedSize = NULL; u8 compressedFiles = 0; SDIFileEntry *fileEntry = mFiles; @@ -229,17 +234,17 @@ void* JKRCompArchive::fetchResource(SDIFileEntry *fileEntry, u32 *pSize) { pSize = &ptrSize; // this makes barely any sense but ok } - if (fileEntry->data == NULL) { + if (JKAR_DATA(fileEntry) == NULL) { u32 flag = fileEntry->type_flags_and_name_offset >> 0x18; if(flag & 0x10) { - fileEntry->data = (void *)(field_0x64 + fileEntry->data_offset); + JKAR_DATA(fileEntry) = (void *)(field_0x64 + fileEntry->data_offset); *pSize = size; } else if (flag & 0x20) { u8 *data; size = JKRAramArchive::fetchResource_subroutine(fileEntry->data_offset + mAramPart->getAddress() - mSizeOfMemPart, size, mHeap, compression, &data); *pSize = size; - fileEntry->data = data; + JKAR_DATA(fileEntry) = data; if(compression == COMPRESSION_YAZ0) { setExpandSize(fileEntry, *pSize); } @@ -250,7 +255,7 @@ void* JKRCompArchive::fetchResource(SDIFileEntry *fileEntry, u32 *pSize) { if (pSize != NULL) { *pSize = resSize; } - fileEntry->data = data; + JKAR_DATA(fileEntry) = data; if (compression == COMPRESSION_YAZ0) { setExpandSize(fileEntry, *pSize); } @@ -261,7 +266,7 @@ void* JKRCompArchive::fetchResource(SDIFileEntry *fileEntry, u32 *pSize) { *pSize = fileEntry->data_size; } } - return fileEntry->data; + return JKAR_DATA(fileEntry); } @@ -274,7 +279,7 @@ void *JKRCompArchive::fetchResource(void *data, u32 compressedSize, SDIFileEntry u32 fileFlag = fileEntry->type_flags_and_name_offset >> 0x18; int compression = JKRConvertAttrToCompressionType(u8(fileFlag)); - if(fileEntry->data != NULL) { + if(JKAR_DATA(fileEntry) != NULL) { if (compression == COMPRESSION_YAZ0) { u32 expandSize = getExpandSize(fileEntry); if (expandSize != 0) { @@ -286,7 +291,7 @@ void *JKRCompArchive::fetchResource(void *data, u32 compressedSize, SDIFileEntry fileSize = compressedSize; } - JKRHeap::copyMemory(data, fileEntry->data, fileSize); + JKRHeap::copyMemory(data, JKAR_DATA(fileEntry), fileSize); size = fileSize; } else { @@ -318,12 +323,12 @@ void JKRCompArchive::removeResourceAll() { for (int i = 0; i < mArcInfoBlock->num_file_entries; i++) { int tmp = fileEntry->type_flags_and_name_offset >> 0x18; - if (fileEntry->data != NULL) { + if (JKAR_DATA(fileEntry) != NULL) { if (!(tmp & 0x10)) { - JKRFreeToHeap(mHeap, fileEntry->data); + JKRFreeToHeap(mHeap, JKAR_DATA(fileEntry)); } - fileEntry->data = NULL; + JKAR_DATA(fileEntry) = NULL; } } fileEntry++; @@ -340,7 +345,7 @@ bool JKRCompArchive::removeResource(void* resource) { JKRFreeToHeap(mHeap, resource); } - fileEntry->data = NULL; + JKAR_DATA(fileEntry) = NULL; return true; } diff --git a/src/JSystem/JKernel/JKRDecomp.cpp b/src/JSystem/JKernel/JKRDecomp.cpp index 87557d65bf..e14b285edd 100644 --- a/src/JSystem/JKernel/JKRDecomp.cpp +++ b/src/JSystem/JKernel/JKRDecomp.cpp @@ -206,7 +206,7 @@ void JKRDecomp::decodeSZS(u8* src_buffer, u8* dst_buffer, u32 srcSize, u32 dstSi s32 chunkBitsLeft = 0; s32 chunkBits; - decompEnd = dst_buffer + *(int*)(src_buffer + 4) - dstSize; + decompEnd = dst_buffer + JKRDecompExpandSize(src_buffer) - dstSize; if (srcSize == 0) { return; diff --git a/src/JSystem/JKernel/JKRDvdAramRipper.cpp b/src/JSystem/JKernel/JKRDvdAramRipper.cpp index 3ca276e050..8b29459a9a 100644 --- a/src/JSystem/JKernel/JKRDvdAramRipper.cpp +++ b/src/JSystem/JKernel/JKRDvdAramRipper.cpp @@ -103,7 +103,7 @@ JKRADCommand* JKRDvdAramRipper::callCommand_Async(JKRADCommand* command) { fileSize = ALIGN_NEXT(fileSize, 0x20); if (command->mExpandSwitch == 1) { u8 buffer[0x40]; - u8* bufPtr = (u8*)ALIGN_NEXT((u32)&buffer, 0x20); + u8* bufPtr = (u8*)ALIGN_NEXT((uintptr_t)&buffer, 0x20); while (true) { s32 result = DVDReadPrio(dvdFile->getFileInfo(), bufPtr, 0x20, 0, 2); if (result >= 0) { @@ -329,7 +329,8 @@ static int decompSZS_subroutine(u8* src, u32 dest) { } SYaz0Header* header = (SYaz0Header*)src; - endAddr = dest + (header->length - fileOffset); + u32 decompressedLength = JKRDecompExpandSize(src); + endAddr = dest + (decompressedLength - fileOffset); if (endAddr > dest + maxDest) { endAddr = dest + maxDest; } @@ -471,7 +472,7 @@ static u32 dmaBufferFlush(u32 param_1) { return 0; } u32 size = ALIGN_NEXT(dmaCurrent - dmaBuf, 0x20); - JKRAramPcs(0, (u32)dmaBuf, param_1, size, NULL); + JKRAramPcs(0, (uintptr_t)dmaBuf, param_1, size, NULL); dmaCurrent = dmaBuf; return size; } diff --git a/src/JSystem/JKernel/JKRDvdArchive.cpp b/src/JSystem/JKernel/JKRDvdArchive.cpp index ed88d791e7..dd4d504868 100644 --- a/src/JSystem/JKernel/JKRDvdArchive.cpp +++ b/src/JSystem/JKernel/JKRDvdArchive.cpp @@ -29,8 +29,8 @@ JKRDvdArchive::~JKRDvdArchive() { SDIFileEntry* fileEntry = mFiles; int i = 0; for (; i < mArcInfoBlock->num_file_entries; i++) { - if (fileEntry->data) { - JKRFreeToHeap(mHeap, fileEntry->data); + if (JKAR_DATA(fileEntry)) { + JKRFreeToHeap(mHeap, JKAR_DATA(fileEntry)); } fileEntry++; } @@ -96,6 +96,10 @@ bool JKRDvdArchive::open(s32 entryNum) { mStringTable = (char*)((intptr_t)&mArcInfoBlock->num_nodes + mArcInfoBlock->string_table_offset); mExpandedSize = NULL; +#if TARGET_PC + initFileDataPointers(); +#endif + u8 useCompression; useCompression = 0; SDIFileEntry* fileEntry; @@ -148,7 +152,7 @@ void* JKRDvdArchive::fetchResource(SDIFileEntry* fileEntry, u32* returnSize) { } JKRCompression fileCompression = JKRConvertAttrToCompressionType(u8(fileEntry->type_flags_and_name_offset >> 24)); - if (!fileEntry->data) { + if (!JKAR_DATA(fileEntry)) { u8* resourcePtr; u32 resourceSize = fetchResource_subroutine( mEntryNum, mDataOffset + fileEntry->data_offset, fileEntry->data_size, mHeap, @@ -158,7 +162,7 @@ void* JKRDvdArchive::fetchResource(SDIFileEntry* fileEntry, u32* returnSize) { return NULL; } - fileEntry->data = resourcePtr; + JKAR_DATA(fileEntry) = resourcePtr; if (fileCompression == COMPRESSION_YAZ0) { setExpandSize(fileEntry, *returnSize); } @@ -170,7 +174,7 @@ void* JKRDvdArchive::fetchResource(SDIFileEntry* fileEntry, u32* returnSize) { } } - return fileEntry->data; + return JKAR_DATA(fileEntry); } void* JKRDvdArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* fileEntry, @@ -179,7 +183,7 @@ void* JKRDvdArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* f u32 size = fileEntry->data_size; JKRCompression fileCompression = JKRConvertAttrToCompressionType(u8(fileEntry->type_flags_and_name_offset >> 24)); - if (!fileEntry->data) { + if (!JKAR_DATA(fileEntry)) { bufferSize = (s32)ALIGN_PREV(bufferSize, 0x20); size = fetchResource_subroutine(mEntryNum, mDataOffset + fileEntry->data_offset, fileEntry->data_size, (u8*)buffer, bufferSize, fileCompression, @@ -196,7 +200,7 @@ void* JKRDvdArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* f size = bufferSize; } - JKRHeap::copyMemory(buffer, fileEntry->data, size); + JKRHeap::copyMemory(buffer, JKAR_DATA(fileEntry), size); } if (returnSize) { diff --git a/src/JSystem/JKernel/JKRDvdFile.cpp b/src/JSystem/JKernel/JKRDvdFile.cpp index 07bd9505a5..41eec5809d 100644 --- a/src/JSystem/JKernel/JKRDvdFile.cpp +++ b/src/JSystem/JKernel/JKRDvdFile.cpp @@ -124,7 +124,7 @@ s32 JKRDvdFile::sync(void) { void JKRDvdFile::doneProcess(s32 id, DVDFileInfo* fileInfo) { // fileInfo->field_0x3c looks like some kind of user pointer? - JKRDvdFile* dvdFile = *(JKRDvdFile**)((u8*)fileInfo + 0x3c); + JKRDvdFile* dvdFile = *(JKRDvdFile**)((u8*)fileInfo + (offsetof(JKRDvdFile, mDvdFile) - offsetof(JKRDvdFile, mFileInfo))); OSSendMessage(&dvdFile->mMessageQueue2, (OSMessage)id, OS_MESSAGE_NOBLOCK); } diff --git a/src/JSystem/JKernel/JKRDvdRipper.cpp b/src/JSystem/JKernel/JKRDvdRipper.cpp index cf84ef9eec..0017119c2b 100644 --- a/src/JSystem/JKernel/JKRDvdRipper.cpp +++ b/src/JSystem/JKernel/JKRDvdRipper.cpp @@ -329,7 +329,8 @@ int decompSZS_subroutine(u8* src, u8* dest) { } SYaz0Header* header = (SYaz0Header*)src; - endPtr = dest + (header->length - fileOffset); + u32 decompressedLength = JKRDecompExpandSize(src); + endPtr = dest + (decompressedLength - fileOffset); if (endPtr > dest + maxDest) { endPtr = dest + maxDest; } diff --git a/src/JSystem/JKernel/JKRExpHeap.cpp b/src/JSystem/JKernel/JKRExpHeap.cpp index 1c6d16c1a9..a4f2bbad8c 100644 --- a/src/JSystem/JKernel/JKRExpHeap.cpp +++ b/src/JSystem/JKernel/JKRExpHeap.cpp @@ -373,7 +373,7 @@ void* JKRExpHeap::allocFromTail(u32 size, int align) { CMemBlock* foundBlock = NULL; CMemBlock* newBlock = NULL; u32 usedSize; - u32 start; + uintptr_t start; for (CMemBlock* block = mTailFreeList; block; block = block->mPrev) { start = ALIGN_PREV((uintptr_t)block->getContent() + block->size - size, align); diff --git a/src/JSystem/JKernel/JKRHeap.cpp b/src/JSystem/JKernel/JKRHeap.cpp index 720166455a..1ad3eedceb 100644 --- a/src/JSystem/JKernel/JKRHeap.cpp +++ b/src/JSystem/JKernel/JKRHeap.cpp @@ -8,8 +8,15 @@ #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JUtility/JUTException.h" +#ifdef __MWERKS__ #include +#else +#include +#include +#include +#endif #include +#include #if DEBUG u8 JKRValue_DEBUGFILL_NOTUSE = 0xFD; @@ -95,12 +102,28 @@ JKRHeap::JKRFreeCallback JKRHeap::sFreeCallback; bool JKRHeap::initArena(char** memory, u32* size, int maxHeaps) { void* arenaLo = OSGetArenaLo(); void* arenaHi = OSGetArenaHi(); -#if !PLATFORM_GCN - OSReport("original arenaLo = %p arenaHi = %p\n", arenaLo, arenaHi); -#endif + + OSReport("[JKRHeap] initArena: Lo=%p Hi=%p Size=0x%X\n", arenaLo, arenaHi, + (uintptr_t)arenaHi - (uintptr_t)arenaLo); + if (arenaLo == arenaHi) return false; +#ifdef TARGET_PC + // PC: Simple arena setup without GameCube-specific memory management + arenaLo = (void*)ALIGN_NEXT((uintptr_t)arenaLo, 0x20); + arenaHi = (void*)ALIGN_PREV((uintptr_t)arenaHi, 0x20); + + mCodeStart = nullptr; + mCodeEnd = nullptr; + mUserRamStart = arenaLo; + mUserRamEnd = arenaHi; + mMemorySize = (uintptr_t)arenaHi - (uintptr_t)arenaLo; + + *memory = (char*)arenaLo; + *size = (uintptr_t)arenaHi - (uintptr_t)arenaLo; + return true; +#else arenaLo = OSInitAlloc(arenaLo, arenaHi, maxHeaps); arenaLo = (void*)ALIGN_NEXT((uintptr_t)arenaLo, 0x20); arenaHi = (void*)ALIGN_PREV((uintptr_t)arenaHi, 0x20); @@ -119,6 +142,7 @@ bool JKRHeap::initArena(char** memory, u32* size, int maxHeaps) { *memory = (char*)arenaLo; *size = (uintptr_t)arenaHi - (uintptr_t)arenaLo; return true; +#endif } #if PLATFORM_WII || PLATFORM_SHIELD @@ -289,8 +313,8 @@ u8 JKRHeap::getCurrentGroupId() { } u32 JKRHeap::getMaxAllocatableSize(int alignment) { - u32 maxFreeBlock = (uintptr_t)getMaxFreeBlock(); - u32 ptrOffset = (alignment - 1) & alignment - (maxFreeBlock & 0xf); + uintptr_t maxFreeBlock = (uintptr_t)getMaxFreeBlock(); + uintptr_t ptrOffset = (alignment - 1) & alignment - (maxFreeBlock & (MEM_BLOCK_SIZE - 1)); return ~(alignment - 1) & (getFreeSize() - ptrOffset); } @@ -468,37 +492,113 @@ bool JKRHeap::isSubHeap(JKRHeap* heap) const { return false; } +#ifdef __MWERKS__ void* operator new(size_t size) { return JKRHeap::alloc(size, 4, NULL); } +#else +void* operator new(size_t size) { + if (JKRHeap::sCurrentHeap == NULL) { + return malloc(size); + } + void* mem = JKRHeap::alloc(size, alignof(max_align_t), NULL); + if (mem == NULL) { + OSReport("[NEW] JKRHeap FULL! Fallback to malloc for size %u\n", (unsigned)size); + mem = malloc(size); + } + return mem; +} +#endif +#ifdef __MWERKS__ void* operator new(size_t size, int alignment) { return JKRHeap::alloc(size, alignment, NULL); } +#else +void* operator new(size_t size, int alignment) { + if (JKRHeap::sCurrentHeap == nullptr) + return _aligned_malloc(size, alignment); + void* mem = JKRHeap::alloc(size, alignment, nullptr); + if (mem == nullptr) { + OSReport("[NEW] JKRHeap FULL! Fallback to aligned_malloc size %u\n", (unsigned)size); + return _aligned_malloc(size, alignment); + } + return mem; +} +#endif void* operator new(size_t size, JKRHeap* heap, int alignment) { return JKRHeap::alloc(size, alignment, heap); } +#ifdef __MWERKS__ void* operator new[](size_t size) { return JKRHeap::alloc(size, 4, NULL); } +#else +void* operator new[](size_t size) { + if (JKRHeap::sCurrentHeap == NULL) + return malloc(size); + void* mem = JKRHeap::alloc(size, alignof(max_align_t), NULL); + if (mem == NULL) { + mem = malloc(size); + } + return mem; +} +#endif +#ifdef __MWERKS__ void* operator new[](size_t size, int alignment) { return JKRHeap::alloc(size, alignment, NULL); } +#else +void* operator new[](size_t size, int alignment) { + if (JKRHeap::sCurrentHeap == nullptr) + return _aligned_malloc(size, alignment); + void* mem = JKRHeap::alloc(size, alignment, nullptr); + if (mem == nullptr) + return _aligned_malloc(size, alignment); + return mem; +} +#endif void* operator new[](size_t size, JKRHeap* heap, int alignment) { return JKRHeap::alloc(size, alignment, heap); } +#ifdef __MWERKS__ void operator delete(void* ptr) { JKRHeap::free(ptr, NULL); } +#else +void operator delete(void* ptr) { + if (ptr == NULL) + return; + JKRHeap* heap = JKRHeap::findFromRoot(ptr); + if (heap == NULL) { + free(ptr); + return; + } + JKRHeap::free(ptr, NULL); +} +#endif +#ifdef __MWERKS__ void operator delete[](void* ptr) { JKRHeap::free(ptr, NULL); } +#else +void operator delete[](void* ptr) { + if (ptr == NULL) + return; + JKRHeap* heap = JKRHeap::findFromRoot(ptr); + if (heap == NULL) { + free(ptr); + return; + } + JKRHeap::free(ptr, NULL); +} +#endif s32 fillcheck_dispcount = 100; bool data_8074A8D0_debug = true; diff --git a/src/JSystem/JKernel/JKRMemArchive.cpp b/src/JSystem/JKernel/JKRMemArchive.cpp index 0c0ef4887c..9a594cd6f8 100644 --- a/src/JSystem/JKernel/JKRMemArchive.cpp +++ b/src/JSystem/JKernel/JKRMemArchive.cpp @@ -95,6 +95,10 @@ bool JKRMemArchive::open(s32 entryNum, JKRArchive::EMountDirection mountDirectio mFiles = (SDIFileEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->file_entry_offset); mStringTable = (char *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->string_table_offset); +#if TARGET_PC + initFileDataPointers(); +#endif + mArchiveData = (u8 *)((uintptr_t)mArcHeader + mArcHeader->header_length + mArcHeader->file_data_offset); mIsOpen = true; @@ -120,20 +124,25 @@ bool JKRMemArchive::open(void* buffer, u32 bufferSize, JKRMemBreakFlag flag) { mIsOpen = (flag == JKRMEMBREAK_FLAG_UNKNOWN1) ? true : false; // mIsOpen might be u8 mHeap = JKRHeap::findFromRoot(buffer); mCompression = COMPRESSION_NONE; + +#if TARGET_PC + initFileDataPointers(); +#endif + return true; } void* JKRMemArchive::fetchResource(SDIFileEntry* fileEntry, u32* resourceSize) { JUT_ASSERT(555, isMounted()); - if (!fileEntry->data) { - fileEntry->data = mArchiveData + fileEntry->data_offset; + if (!JKAR_DATA(fileEntry)) { + JKAR_DATA(fileEntry) = mArchiveData + fileEntry->data_offset; } if (resourceSize) { *resourceSize = fileEntry->data_size; } - return fileEntry->data; + return JKAR_DATA(fileEntry); } void* JKRMemArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* fileEntry, @@ -144,8 +153,8 @@ void* JKRMemArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* f srcLength = bufferSize; } - if (fileEntry->data != NULL) { - memcpy(buffer, fileEntry->data, srcLength); + if (JKAR_DATA(fileEntry) != NULL) { + memcpy(buffer, JKAR_DATA(fileEntry), srcLength); } else { u8 flags = fileEntry->type_flags_and_name_offset >> 24; JKRCompression compression = JKRConvertAttrToCompressionType(flags); @@ -172,8 +181,8 @@ void JKRMemArchive::removeResourceAll(void) { // first fileEntry will clear/remove the resource data. SDIFileEntry* fileEntry = mFiles; for (int i = 0; i < mArcInfoBlock->num_file_entries; i++) { - if (fileEntry->data) { - fileEntry->data = NULL; + if (JKAR_DATA(fileEntry)) { + JKAR_DATA(fileEntry) = NULL; } } fileEntry++; @@ -186,7 +195,7 @@ bool JKRMemArchive::removeResource(void* resource) { if (!fileEntry) return false; - fileEntry->data = NULL; + JKAR_DATA(fileEntry) = NULL; return true; } diff --git a/src/JSystem/JKernel/JKRSolidHeap.cpp b/src/JSystem/JKernel/JKRSolidHeap.cpp index 01ead7728b..a12cb8835a 100644 --- a/src/JSystem/JKernel/JKRSolidHeap.cpp +++ b/src/JSystem/JKernel/JKRSolidHeap.cpp @@ -106,9 +106,9 @@ void* JKRSolidHeap::do_alloc(u32 size, int alignment) { } void* JKRSolidHeap::allocFromHead(u32 size, int alignment) { - size = ALIGN_NEXT(size, 0x4); + size = ALIGN_NEXT(size, sizeof(void*)); void* ptr = NULL; - u32 alignedStart = (alignment - 1 + (uintptr_t)mSolidHead) & ~(alignment - 1); + uintptr_t alignedStart = (alignment - 1 + (uintptr_t)mSolidHead) & ~(alignment - 1); u32 totalSize = size + (alignedStart - (uintptr_t)mSolidHead); if (totalSize <= mFreeSize) { #if DEBUG @@ -133,9 +133,9 @@ void* JKRSolidHeap::allocFromHead(u32 size, int alignment) { } void* JKRSolidHeap::allocFromTail(u32 size, int alignment) { - size = ALIGN_NEXT(size, 4); + size = ALIGN_NEXT(size, sizeof(void*)); void* ptr = NULL; - u32 alignedStart = ALIGN_PREV((uintptr_t)mSolidTail - size, alignment); + uintptr_t alignedStart = ALIGN_PREV((uintptr_t)mSolidTail - size, alignment); u32 totalSize = (uintptr_t)mSolidTail - (uintptr_t)alignedStart; if (totalSize <= mFreeSize) { ptr = (void*)alignedStart; diff --git a/src/JSystem/JStage/JSGAmbientLight.cpp b/src/JSystem/JStage/JSGAmbientLight.cpp index e7954c8cf3..acffa59621 100644 --- a/src/JSystem/JStage/JSGAmbientLight.cpp +++ b/src/JSystem/JStage/JSGAmbientLight.cpp @@ -9,7 +9,7 @@ s32 JStage::TAmbientLight::JSGFGetType() const { } GXColor JStage::TAmbientLight::JSGGetColor() const { - return (GXColor){255, 255, 255, 255}; + return COMPOUND_LITERAL(GXColor){255, 255, 255, 255}; } void JStage::TAmbientLight::JSGSetColor(GXColor) {} diff --git a/src/JSystem/JStage/JSGFog.cpp b/src/JSystem/JStage/JSGFog.cpp index cf1a8eb2c8..cb9c28f463 100644 --- a/src/JSystem/JStage/JSGFog.cpp +++ b/src/JSystem/JStage/JSGFog.cpp @@ -28,7 +28,7 @@ f32 JStage::TFog::JSGGetEndZ() const { void JStage::TFog::JSGSetEndZ(f32) {} GXColor JStage::TFog::JSGGetColor() const { - return (GXColor){255, 255, 255, 255}; + return COMPOUND_LITERAL(GXColor){255, 255, 255, 255}; } void JStage::TFog::JSGSetColor(GXColor) {} diff --git a/src/JSystem/JStage/JSGLight.cpp b/src/JSystem/JStage/JSGLight.cpp index a9797befcf..c8b7432987 100644 --- a/src/JSystem/JStage/JSGLight.cpp +++ b/src/JSystem/JStage/JSGLight.cpp @@ -15,7 +15,7 @@ bool JStage::TLight::JSGGetLightType() const { void JStage::TLight::JSGSetLightType(JStage::TELight) {} GXColor JStage::TLight::JSGGetColor() const { - return (GXColor){255, 255, 255, 255}; + return COMPOUND_LITERAL(GXColor){255, 255, 255, 255}; } void JStage::TLight::JSGSetColor(GXColor) {} diff --git a/src/JSystem/JUtility/JUTCacheFont.cpp b/src/JSystem/JUtility/JUTCacheFont.cpp index a4f22ab3d6..ed886050e8 100644 --- a/src/JSystem/JUtility/JUTCacheFont.cpp +++ b/src/JSystem/JUtility/JUTCacheFont.cpp @@ -73,16 +73,18 @@ int JUTCacheFont::getMemorySize(ResFONT const* p_font, u16* o_widCount, u32* o_w u32 glyTexSize; u8* fontInf = (u8*)p_font->data; - for (int i = 0; i < p_font->numBlocks; i++) { - switch (((BlockHeader*)fontInf)->magic) { + for (int i = 0; i < (int)p_font->numBlocks; i++) { + u32 blkMagic = ((BlockHeader*)fontInf)->magic; + u32 blkSize = ((BlockHeader*)fontInf)->size; + switch (blkMagic) { case 'INF1': break; case 'WID1': - totalWidSize += ((BlockHeader*)fontInf)->size; + totalWidSize += blkSize; widBlockCount++; break; case 'GLY1': - totalGlySize += ((BlockHeader*)fontInf)->size; + totalGlySize += blkSize; glyTexSize = ((ResFONT::GLY1*)fontInf)->textureSize; glyBlockCount++; if (glyTexSize > maxGlyTexSize) { @@ -90,7 +92,7 @@ int JUTCacheFont::getMemorySize(ResFONT const* p_font, u16* o_widCount, u32* o_w } break; case 'MAP1': - totalMapSize += ((BlockHeader*)fontInf)->size; + totalMapSize += blkSize; mapBlockCount++; break; default: @@ -98,7 +100,7 @@ int JUTCacheFont::getMemorySize(ResFONT const* p_font, u16* o_widCount, u32* o_w break; } - fontInf += ((BlockHeader*)fontInf)->size; + fontInf += blkSize; } if (o_widCount != NULL) { @@ -257,11 +259,13 @@ void JUTCacheFont::setBlock() { ResFONT::MAP1* pMap = (ResFONT::MAP1*)field_0x84; u32 aramAddress = field_0xac->getAddress(); mMaxCode = 0xffff; - const int* pData = (int*)mResFont->data; + const u8* pData = (const u8*)mResFont->data; - for (int i = 0; i < mResFont->numBlocks; i++) { + for (int i = 0; i < (int)mResFont->numBlocks; i++) { + u32 blkMagic = ((BlockHeader*)pData)->magic; + u32 blkSize = ((BlockHeader*)pData)->size; u32 u; - switch (*pData) { + switch (blkMagic) { case 'INF1': memcpy(mInf1Ptr, pData, 0x20); u = mInf1Ptr->fontType; @@ -269,15 +273,15 @@ void JUTCacheFont::setBlock() { mIsLeadByte = &JUTResFont::saoAboutEncoding_[u]; break; case 'WID1': - memcpy(pWidth, pData, pData[1]); + memcpy(pWidth, pData, blkSize); mpWidthBlocks[widthNum] = (ResFONT::WID1*)pWidth; widthNum++; - pWidth += pData[1]; + pWidth += blkSize; break; - case 'GLY1': + case 'GLY1': { memcpy(piVar5, pData, 0x20); JKRAramBlock* iVar1; - iVar1 = JKRMainRamToAram((u8*)pData + 0x20, aramAddress, pData[1] - 0x20, + iVar1 = JKRMainRamToAram((u8*)pData + 0x20, aramAddress, blkSize - 0x20, EXPAND_SWITCH_UNKNOWN0, 0, NULL, 0xffffffff, NULL); if (iVar1 == NULL) { JUTException::panic("JUTCacheFont.cpp", 0x1dd, @@ -290,23 +294,24 @@ void JUTCacheFont::setBlock() { mpGlyphBlocks[gylphNum] = piVar5; gylphNum++; piVar5++; - aramAddress += pData[1] - 0x20; + aramAddress += blkSize - 0x20; break; + } case 'MAP1': - memcpy(pMap, pData, pData[1]); + memcpy(pMap, pData, blkSize); mpMapBlocks[mapNum] = pMap; if (mMaxCode > mpMapBlocks[mapNum]->startCode) { mMaxCode = mpMapBlocks[mapNum]->startCode; } mapNum++; - pMap = (ResFONT::MAP1*)((u8*)pMap + pData[1]); + pMap = (ResFONT::MAP1*)((u8*)pMap + blkSize); break; default: JUTReportConsole("Unknown data block\n"); break; } - pData = (int*)((u8*)pData + pData[1]); + pData = pData + blkSize; } } diff --git a/src/JSystem/JUtility/JUTGraphFifo.cpp b/src/JSystem/JUtility/JUTGraphFifo.cpp index a30a0aeace..a68a4745b1 100644 --- a/src/JSystem/JUtility/JUTGraphFifo.cpp +++ b/src/JSystem/JUtility/JUTGraphFifo.cpp @@ -20,6 +20,7 @@ JUTGraphFifo::JUTGraphFifo(u32 size) { mBase = JKRAllocFromSysHeap(mSize + 0xA0, 32); mBase = (void*)((intptr_t)mBase + 0x1F & ~0x1F); mFifo = GXInit(mBase, mSize); + GXSetColorUpdate(GX_ENABLE); data_804514B8 = true; sCurrentFifo = this; } diff --git a/src/JSystem/JUtility/JUTPalette.cpp b/src/JSystem/JUtility/JUTPalette.cpp index 23d2aa41c6..04b5841b16 100644 --- a/src/JSystem/JUtility/JUTPalette.cpp +++ b/src/JSystem/JUtility/JUTPalette.cpp @@ -12,7 +12,7 @@ void JUTPalette::storeTLUT(GXTlut param_0, ResTLUT* tlut) { mFormat = tlut->format; mTransparency = tlut->transparency; mNumColors = tlut->numColors; - mColorTable = tlut + 8; + mColorTable = (ResTLUT*)((u8*)tlut + 0x20); GXInitTlutObj(&mTlutObj, (void*)mColorTable, (GXTlutFmt)mFormat, mNumColors); } diff --git a/src/JSystem/JUtility/JUTResFont.cpp b/src/JSystem/JUtility/JUTResFont.cpp index 62abfbd213..6b6a52f524 100644 --- a/src/JSystem/JUtility/JUTResFont.cpp +++ b/src/JSystem/JUtility/JUTResFont.cpp @@ -91,7 +91,7 @@ void JUTResFont::countBlock() { u8* pData = (u8*)&mResFont->data; for (u32 i = 0; i < mResFont->numBlocks; i++, pData += ((BlockHeader*)pData)->size) { - int magic = ((BlockHeader*)pData)->magic; + u32 magic = ((BlockHeader*)pData)->magic; switch (magic) { case 'WID1': mWid1BlockNum++; @@ -124,8 +124,10 @@ void JUTResFont::setBlock() { mMaxCode = -1; BlockHeader* data = (BlockHeader*)mResFont->data; - for (u32 i = 0; i < mResFont->numBlocks; data = (BlockHeader*)data->getNext(), i++) { - switch (data->magic) { + for (u32 i = 0; i < mResFont->numBlocks; + data = (BlockHeader*)((u8*)data + data->size), i++) { + u32 magic = data->magic; + switch (magic) { case 'INF1': { mInf1Ptr = (ResFONT::INF1*)data; u32 u = mInf1Ptr->fontType; @@ -236,10 +238,14 @@ f32 JUTResFont::drawChar_scale(f32 pos_x, f32 pos_y, f32 scale_x, f32 scale_y, i y1 = pos_y - getAscent() * (scale_y / getHeight()); f32 y2 = getDescent() * (scale_y / getHeight()) + pos_y; - s32 u1 = (mWidth * 0x8000) / mpGlyphBlocks[field_0x66]->textureWidth; - s32 v1 = (mHeight * 0x8000) / mpGlyphBlocks[field_0x66]->textureHeight; - s32 u2 = ((mWidth + mpGlyphBlocks[field_0x66]->cellWidth) * 0x8000) / mpGlyphBlocks[field_0x66]->textureWidth; - s32 v2 = ((mHeight + mpGlyphBlocks[field_0x66]->cellHeight) * 0x8000) / mpGlyphBlocks[field_0x66]->textureHeight; + u16 texW = mpGlyphBlocks[field_0x66]->textureWidth; + u16 texH = mpGlyphBlocks[field_0x66]->textureHeight; + u16 cellW = mpGlyphBlocks[field_0x66]->cellWidth; + u16 cellH = mpGlyphBlocks[field_0x66]->cellHeight; + s32 u1 = (mWidth * 0x8000) / texW; + s32 v1 = (mHeight * 0x8000) / texH; + s32 u2 = ((mWidth + cellW) * 0x8000) / texW; + s32 v2 = ((mHeight + cellH) * 0x8000) / texH; GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); @@ -285,8 +291,11 @@ void JUTResFont::getWidthEntry(int code, JUTFont::TWidth* i_width) const { i_width->field_0x1 = mInf1Ptr->width; for (int i = 0; i < mWid1BlockNum; i++) { - if (mpWidthBlocks[i]->startCode <= fontCode && fontCode <= mpWidthBlocks[i]->endCode) { - *i_width = *(JUTFont::TWidth*)&mpWidthBlocks[i]->mChunkNum[(fontCode - mpWidthBlocks[i]->startCode) * 2]; + u16 sc = mpWidthBlocks[i]->startCode; + u16 ec = mpWidthBlocks[i]->endCode; + if (sc <= fontCode && fontCode <= ec) { + // TWidth is two u8 fields, no byte-swap needed + *i_width = *(JUTFont::TWidth*)&mpWidthBlocks[i]->mChunkNum[(fontCode - sc) * 2]; break; } } @@ -333,16 +342,19 @@ int JUTResFont::getFontCode(int chr) const { chr = halftofull[chr - 32]; } for (int i = 0; i < mMap1BlockNum; i++) { - if ((mpMapBlocks[i]->startCode <= chr) && (chr <= mpMapBlocks[i]->endCode)) { - if (mpMapBlocks[i]->mappingMethod == 0) { - ret = chr - mpMapBlocks[i]->startCode; + u16 sc = mpMapBlocks[i]->startCode; + u16 ec = mpMapBlocks[i]->endCode; + u16 mm = mpMapBlocks[i]->mappingMethod; + if ((sc <= chr) && (chr <= ec)) { + if (mm == 0) { + ret = chr - sc; break; - } else if (mpMapBlocks[i]->mappingMethod == 2) { - u16* leading_temp = &mpMapBlocks[i]->mLeading; - ret = leading_temp[chr - mpMapBlocks[i]->startCode]; + } else if (mm == 2) { + BE(u16)* leading_temp = &mpMapBlocks[i]->mLeading; + ret = leading_temp[chr - sc]; break; - } else if (mpMapBlocks[i]->mappingMethod == 3) { - u16* leading_temp = &mpMapBlocks[i]->mLeading; + } else if (mm == 3) { + BE(u16)* leading_temp = &mpMapBlocks[i]->mLeading; int phi_r5 = 0; int phi_r6_2 = mpMapBlocks[i]->numEntries - 1; @@ -362,8 +374,8 @@ int JUTResFont::getFontCode(int chr) const { ret = leading_temp[temp_r7 * 2 + 1]; break; } - } else if (mpMapBlocks[i]->mappingMethod == 1) { - u16* phi_r5_2 = NULL; + } else if (mm == 1) { + BE(u16)* phi_r5_2 = NULL; if (mpMapBlocks[i]->numEntries == 1) { phi_r5_2 = &mpMapBlocks[i]->mLeading; } @@ -380,26 +392,37 @@ void JUTResFont::loadImage(int code, GXTexMapID id){ int i = 0; for (; i < mGly1BlockNum; i++) { - if (mpGlyphBlocks[i]->startCode <= code && code <= mpGlyphBlocks[i]->endCode) + u16 sc = mpGlyphBlocks[i]->startCode; + u16 ec = mpGlyphBlocks[i]->endCode; + if (sc <= code && code <= ec) { - code -= mpGlyphBlocks[i]->startCode; + code -= sc; break; } } if (i != mGly1BlockNum) { - s32 pageNumCells = mpGlyphBlocks[i]->numRows * mpGlyphBlocks[i]->numColumns; + u16 numRows = mpGlyphBlocks[i]->numRows; + u16 numCols = mpGlyphBlocks[i]->numColumns; + u16 cellW = mpGlyphBlocks[i]->cellWidth; + u16 cellH = mpGlyphBlocks[i]->cellHeight; + u32 texSize = mpGlyphBlocks[i]->textureSize; + u16 texW = mpGlyphBlocks[i]->textureWidth; + u16 texH = mpGlyphBlocks[i]->textureHeight; + u16 texFmt = mpGlyphBlocks[i]->textureFormat; + + s32 pageNumCells = numRows * numCols; s32 pageIdx = code / pageNumCells; s32 cellIdxInPage = code - pageIdx * pageNumCells; - s32 cellRow = (cellIdxInPage / mpGlyphBlocks[i]->numRows); - s32 cellCol = (cellIdxInPage - cellRow * mpGlyphBlocks[i]->numRows); - mWidth = cellCol * mpGlyphBlocks[i]->cellWidth; - mHeight = cellRow * mpGlyphBlocks[i]->cellHeight; + s32 cellRow = (cellIdxInPage / numRows); + s32 cellCol = (cellIdxInPage - cellRow * numRows); + mWidth = cellCol * cellW; + mHeight = cellRow * cellH; if (pageIdx != mTexPageIdx || i != field_0x66) { - GXInitTexObj(&mTexObj, &mpGlyphBlocks[i]->data[pageIdx * mpGlyphBlocks[i]->textureSize], mpGlyphBlocks[i]->textureWidth, - mpGlyphBlocks[i]->textureHeight, (GXTexFmt)mpGlyphBlocks[i]->textureFormat, GX_CLAMP, GX_CLAMP, 0); + GXInitTexObj(&mTexObj, &mpGlyphBlocks[i]->data[pageIdx * texSize], texW, + texH, (GXTexFmt)texFmt, GX_CLAMP, GX_CLAMP, 0); GXInitTexObjLOD(&mTexObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0U, 0U, GX_ANISO_1); mTexPageIdx = pageIdx; @@ -410,7 +433,7 @@ void JUTResFont::loadImage(int code, GXTexMapID id){ } } -int JUTResFont::convertSjis(int inChr, u16* inLead) const { +int JUTResFont::convertSjis(int inChr, BE(u16)* inLead) const { int r29; int tmp = JSUHiByte(inChr); int tmp2 = JSULoByte(inChr) - 0x40; diff --git a/src/JSystem/JUtility/JUTTexture.cpp b/src/JSystem/JUtility/JUTTexture.cpp index 985ea6499b..e048ad101a 100644 --- a/src/JSystem/JUtility/JUTTexture.cpp +++ b/src/JSystem/JUtility/JUTTexture.cpp @@ -16,7 +16,8 @@ JUTTexture::~JUTTexture() { void JUTTexture::storeTIMG(ResTIMG const* param_0, u8 param_1) { if (param_0 && param_1 < 0x10) { mTexInfo = param_0; - mTexData = (void*)((intptr_t)mTexInfo + mTexInfo->imageOffset); + u32 imgOffset = RES_U32(mTexInfo->imageOffset); + mTexData = (void*)((intptr_t)mTexInfo + imgOffset); if (mTexInfo->imageOffset == 0) { mTexData = (void*)((intptr_t)mTexInfo + 0x20); @@ -30,27 +31,33 @@ void JUTTexture::storeTIMG(ResTIMG const* param_0, u8 param_1) { mMagFilter = mTexInfo->magFilter; mMinLOD = (s8)mTexInfo->minLOD; mMaxLOD = (s8)mTexInfo->maxLOD; - mLODBias = mTexInfo->LODBias; + mLODBias = RES_S16(mTexInfo->LODBias); - if (mTexInfo->numColors == 0) { + u16 numColors = RES_U16(mTexInfo->numColors); + + if (numColors == 0) { initTexObj(); } else { GXTlut tlut; - if (mTexInfo->numColors > 0x100) { + if (numColors > 0x100) { tlut = (GXTlut)((param_1 % 4) + GX_BIGTLUT0); } else { tlut = (GXTlut)param_1; } + u32 palOffset = RES_U32(mTexInfo->paletteOffset); + if (mEmbPalette == NULL || !getEmbPaletteDelFlag()) { mEmbPalette = new JUTPalette(tlut, (GXTlutFmt)mTexInfo->colorFormat, - (JUTTransparency)mTexInfo->alphaEnabled, mTexInfo->numColors, - (void*)(&mTexInfo->format + mTexInfo->paletteOffset)); + (JUTTransparency)mTexInfo->alphaEnabled, + numColors, + (void*)((intptr_t)mTexInfo + palOffset)); setEmbPaletteDelFlag(true); } else { mEmbPalette->storeTLUT(tlut, (GXTlutFmt)mTexInfo->colorFormat, - (JUTTransparency)mTexInfo->alphaEnabled, mTexInfo->numColors, - (void*)(&mTexInfo->format + mTexInfo->paletteOffset)); + (JUTTransparency)mTexInfo->alphaEnabled, + numColors, + (void*)((intptr_t)mTexInfo + palOffset)); } attachPalette(mEmbPalette); } @@ -139,12 +146,13 @@ void JUTTexture::initTexObj() { mipmapEnabled = 0; } u8* image = ((u8*)mTexInfo); - image += (mTexInfo->imageOffset ? mTexInfo->imageOffset : 0x20); - GXInitTexObj(&mTexObj, image, mTexInfo->width, mTexInfo->height, - (GXTexFmt)mTexInfo->format, (GXTexWrapMode)mWrapS, - (GXTexWrapMode)mWrapT, mipmapEnabled); - GXInitTexObjLOD(&mTexObj, (GXTexFilter)mMinFilter, (GXTexFilter)mMagFilter, - mMinLOD / 8.0f, mMaxLOD / 8.0f, mLODBias / 100.0f, mTexInfo->biasClamp, + u32 imgOffset = RES_U32(mTexInfo->imageOffset); + image += (imgOffset ? imgOffset : 0x20); + GXInitTexObj(&mTexObj, image, RES_U16(mTexInfo->width), RES_U16(mTexInfo->height), + (GXTexFmt)mTexInfo->format, (GXTexWrapMode)mWrapS, (GXTexWrapMode)mWrapT, + mipmapEnabled); + GXInitTexObjLOD(&mTexObj, (GXTexFilter)mMinFilter, (GXTexFilter)mMagFilter, mMinLOD / 8.0f, + mMaxLOD / 8.0f, RES_S16(mLODBias) / 100.0f, mTexInfo->biasClamp, mTexInfo->doEdgeLOD, (GXAnisotropy)mTexInfo->maxAnisotropy); } @@ -157,12 +165,16 @@ void JUTTexture::initTexObj(GXTlut param_0) { } mTlutName = param_0; u8* image = ((u8*)mTexInfo); - image += (mTexInfo->imageOffset ? mTexInfo->imageOffset : 0x20); - GXInitTexObjCI(&mTexObj, image, mTexInfo->width, mTexInfo->height, + u32 imgOffset = RES_U32(mTexInfo->imageOffset); // Swap! + printf("[DIAG] initTexObj: Offset=%u, W=%u, H=%u, Ptr=%p\n", imgOffset, mTexInfo->width, + mTexInfo->height, + mTexInfo); + image += (imgOffset ? imgOffset : 0x20); + GXInitTexObjCI(&mTexObj, image, RES_U16(mTexInfo->width), RES_U16(mTexInfo->height), (GXCITexFmt)mTexInfo->format, (GXTexWrapMode)mWrapS, (GXTexWrapMode)mWrapT, mipmapEnabled, param_0); - GXInitTexObjLOD(&mTexObj, (GXTexFilter)mMinFilter, (GXTexFilter)mMagFilter, - mMinLOD / 8.0f, mMaxLOD / 8.0f, mLODBias / 100.0f, mTexInfo->biasClamp, + GXInitTexObjLOD(&mTexObj, (GXTexFilter)mMinFilter, (GXTexFilter)mMagFilter, mMinLOD / 8.0f, + mMaxLOD / 8.0f, RES_S16(mLODBias) / 100.0f, mTexInfo->biasClamp, mTexInfo->doEdgeLOD, (GXAnisotropy)mTexInfo->maxAnisotropy); } diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/stdint.h b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/stdint.h index caf108094b..1c8c64b0b5 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/stdint.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/stdint.h @@ -3,20 +3,24 @@ #include -#ifdef __cplusplus - using std::uint8_t; - using std::uint16_t; - using std::uint32_t; +#ifdef _MSVC_LANG + #include +#else + #ifdef __cplusplus + using std::uint8_t; + using std::uint16_t; + using std::uint32_t; - using std::int8_t; - using std::int16_t; - using std::int32_t; + using std::int8_t; + using std::int16_t; + using std::int32_t; - using std::uint64_t; - using std::int64_t; + using std::uint64_t; + using std::int64_t; - using std::uintptr_t; - using std::intptr_t; + using std::uintptr_t; + using std::intptr_t; + #endif #endif #endif diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/cstddef b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/cstddef index cd142bcf60..d3ffcea0a8 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/cstddef +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/cstddef @@ -11,8 +11,10 @@ extern "C" { #define NULL 0 #endif +#ifndef _MSVC_LANG typedef unsigned long size_t; typedef long ptrdiff_t; +#endif #ifndef __cplusplus typedef unsigned short wchar_t; diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/float.h b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/float.h index 1a294cbb1c..a5e5791777 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/float.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/float.h @@ -99,7 +99,7 @@ int __fpclassifyl(long double __value); #define FLT_MAX_EXP 128 #define FLT_MAX_10_EXP 38 -#if DEBUG +#if DEBUG || defined(_MSVC_LANG) #define FLT_MAX 3.4028235e38f #define FLT_EPSILON 1.1920929e-7f #else diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/stddef b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/stddef index a960525303..8b2b85e7e6 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/stddef +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/stddef @@ -3,6 +3,10 @@ #include +#ifdef _MSVC_LANG +#include +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/va_list b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/va_list index 04a8cfe7fc..215d33e3d9 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/va_list +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/va_list @@ -1,6 +1,13 @@ #ifndef MSL_VA_LIST_H #define MSL_VA_LIST_H +#ifdef _MSVC_LANG + #include + #define va_start __crt_va_start_a + #define va_end __crt_va_end + #define va_arg __crt_va_arg +#else + #ifdef __cplusplus extern "C" { #endif @@ -39,4 +46,6 @@ void* __va_arg(_va_list_struct*, int); } #endif +#endif + #endif /* __VA_ARG_H */ diff --git a/src/SSystem/SComponent/c_API.cpp b/src/SSystem/SComponent/c_API.cpp index 8e075e10ef..a6ecf42d75 100644 --- a/src/SSystem/SComponent/c_API.cpp +++ b/src/SSystem/SComponent/c_API.cpp @@ -7,12 +7,16 @@ extern void mDoGph_BlankingON(); extern void mDoGph_BlankingOFF(); -extern void mDoGph_BeforeOfDraw(); -extern void mDoGph_AfterOfDraw(); -extern void mDoGph_Painter(); -extern void mDoGph_Create(); +extern int mDoGph_BeforeOfDraw(); +extern int mDoGph_AfterOfDraw(); +extern int mDoGph_Painter(); +extern int mDoGph_Create(); cAPI_Interface g_cAPI_Interface = { - mDoGph_Create, mDoGph_BeforeOfDraw, mDoGph_AfterOfDraw, - mDoGph_Painter, mDoGph_BlankingON, mDoGph_BlankingOFF, + (cAPIGph_Mthd)mDoGph_Create, + (cAPIGph_Mthd)mDoGph_BeforeOfDraw, + (cAPIGph_Mthd)mDoGph_AfterOfDraw, + (cAPIGph_Mthd)mDoGph_Painter, + mDoGph_BlankingON, + mDoGph_BlankingOFF, }; diff --git a/src/SSystem/SComponent/c_math.cpp b/src/SSystem/SComponent/c_math.cpp index ba7a63c61a..2cc54fece9 100644 --- a/src/SSystem/SComponent/c_math.cpp +++ b/src/SSystem/SComponent/c_math.cpp @@ -6,6 +6,7 @@ #include "SSystem/SComponent/c_math.h" #include "SSystem/SComponent/c_m3d.h" #include +#include s16 cM_rad2s(f32 rad) { s32 s = (std::fmod(rad, 2 * M_PI) * (0x8000 / M_PI)); diff --git a/src/SSystem/SComponent/c_phase.cpp b/src/SSystem/SComponent/c_phase.cpp index c31fd9b2d0..fbef09e635 100644 --- a/src/SSystem/SComponent/c_phase.cpp +++ b/src/SSystem/SComponent/c_phase.cpp @@ -4,6 +4,7 @@ */ #include "SSystem/SComponent/c_phase.h" +#include "global.h" void cPhs_Reset(request_of_phase_process_class* phase) { phase->id = cPhs_INIT_e; diff --git a/src/SSystem/SComponent/c_xyz.cpp b/src/SSystem/SComponent/c_xyz.cpp index 9f05b9e61c..be4214a874 100644 --- a/src/SSystem/SComponent/c_xyz.cpp +++ b/src/SSystem/SComponent/c_xyz.cpp @@ -6,11 +6,14 @@ #include "SSystem/SComponent/c_xyz.h" #include "SSystem/SComponent/c_math.h" #include "JSystem/JUtility/JUTAssert.h" +#include "global.h" #ifndef __MWERKS__ +#ifndef _MSVC_LANG #include #define FLT_EPSILON std::numeric_limits::epsilon() #endif +#endif cXyz cXyz::operator+(const Vec& vec) const { Vec ret; @@ -82,7 +85,7 @@ cXyz cXyz::normZC() const { outVec.x = 0.0f; outVec.y = 0.0f; outVec.z = 1.0f; - outVec = (Vec){0,0,1}; + outVec = COMPOUND_LITERAL(Vec){0,0,1}; } } diff --git a/src/Z2AudioLib/Z2SceneMgr.cpp b/src/Z2AudioLib/Z2SceneMgr.cpp index 3aa7e99950..1bdc2e4412 100644 --- a/src/Z2AudioLib/Z2SceneMgr.cpp +++ b/src/Z2AudioLib/Z2SceneMgr.cpp @@ -2095,6 +2095,10 @@ bool Z2SceneMgr::loadSceneWave(u32 wave, u32 bank) { #endif bool Z2SceneMgr::loadSeWave(u32 wave) { + return 0; +} + +/* //lw stub lw JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); JUT_ASSERT(3030, sectionHeap); @@ -2109,8 +2113,13 @@ bool Z2SceneMgr::loadSeWave(u32 wave) { JUT_WARN_DEVICE(3038, 1, "Z2SceneMgr::cannot load SE wave:%d\n", wave); return false; } - +*/ bool Z2SceneMgr::loadBgmWave(u32 wave) { + return true; +} + + /* //lw stub lw + JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); JUT_ASSERT(3047, sectionHeap); @@ -2124,4 +2133,4 @@ bool Z2SceneMgr::loadBgmWave(u32 wave) { JUT_WARN_DEVICE(3055, 1, "Z2SceneMgr::cannot load BGM wave:%d\n", wave); return false; -} +} */ diff --git a/src/c/c_dylink.cpp b/src/c/c_dylink.cpp index 27113d7a2a..fdf3e67ea2 100644 --- a/src/c/c_dylink.cpp +++ b/src/c/c_dylink.cpp @@ -2,6 +2,8 @@ * c_dylink.cpp * REL to process name definitions and REL init functions */ +#include + #include "c/c_dylink.h" #include "DynamicLink.h" #include "JSystem/JKernel/JKRExpHeap.h" @@ -17,7 +19,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_ALLDIE, "d_a_alldie"}, +#ifndef TARGET_PC {PROC_Obj_Swpush, "d_a_obj_swpush"}, +#endif // TARGET_PC {PROC_Obj_Swpush2, "d_a_obj_swpush2"}, {PROC_Obj_Swpush5, "d_a_obj_swpush5"}, {PROC_Tag_Gstart, "d_a_tag_gstart"}, @@ -26,7 +30,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = { #endif {PROC_Obj_Lv6ElevtA, "d_a_obj_lv6elevta"}, {PROC_OBJ_SO, "d_a_obj_so"}, +#ifndef TARGET_PC {PROC_Obj_Movebox, "d_a_obj_movebox"}, +#endif // TARGET_PC {PROC_Obj_SwTurn, "d_a_obj_swturn"}, {PROC_Obj_Lv6SwTurn, "d_a_obj_lv6swturn"}, {PROC_OBJ_SEKIZOA, "d_a_obj_sekizoa"}, @@ -34,7 +40,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_TAG_GRA, "d_a_tag_gra"}, {PROC_TAG_YAMI, "d_a_tag_yami"}, {PROC_Obj_Ladder, "d_a_obj_ladder"}, +#ifndef TARGET_PC {PROC_OBJ_BEF, "d_a_obj_brakeeff"}, +#endif // TARGET_PC {PROC_OBJ_FMOBJ, "d_a_obj_fmobj"}, {PROC_OBJ_LBOX, "d_a_obj_lbox"}, {PROC_OBJ_WEB0, "d_a_obj_web0"}, @@ -219,7 +227,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_Obj_SZbridge, "d_a_obj_szbridge"}, {PROC_Obj_KakarikoBrg, "d_a_obj_warp_kbrg"}, {PROC_Obj_OrdinBrg, "d_a_obj_warp_obrg"}, +#ifndef TARGET_PC {PROC_Obj_BurnBox, "d_a_obj_burnbox"}, +#endif // TARGET_PC {PROC_Obj_KJgjs, "d_a_obj_kjgjs"}, {PROC_OBJ_IHASI, "d_a_obj_ihasi"}, {PROC_Obj_IceBlock, "d_a_obj_iceblock"}, @@ -231,7 +241,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_NPC_ZRA, "d_a_npc_zra"}, {PROC_Obj_Chandelier, "d_a_obj_chandelier"}, {PROC_Obj_Stopper2, "d_a_obj_stopper2"}, +#ifndef TARGET_PC {PROC_DOOR20, "d_a_door_shutter"}, +#endif // TARGET_PC {PROC_Tag_Hinit, "d_a_tag_hinit"}, {PROC_Tag_Hjump, "d_a_tag_hjump"}, {PROC_Tag_AJnot, "d_a_tag_ajnot"}, @@ -239,9 +251,13 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_CANOE, "d_a_canoe"}, {PROC_HORSE, "d_a_horse"}, {PROC_E_WB, "d_a_e_wb"}, +#ifndef TARGET_PC {PROC_OBJ_ITO, "d_a_obj_ito"}, +#endif // TARGET_PC {PROC_OBJ_SW, "d_a_obj_sw"}, +#ifndef TARGET_PC {PROC_SPINNER, "d_a_spinner"}, +#endif // TARGET_PC {PROC_B_OB, "d_a_b_ob"}, {PROC_KAGO, "d_a_kago"}, {PROC_E_YC, "d_a_e_yc"}, @@ -250,16 +266,20 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_B_ZANTZ, "d_a_b_zant_mobile"}, {PROC_B_ZANT, "d_a_b_zant"}, {PROC_B_ZANTM, "d_a_b_zant_magic"}, +#ifndef TARGET_PC {PROC_TBOX, "d_a_tbox"}, {PROC_TBOX2, "d_a_tbox2"}, {PROC_BOOMERANG, "d_a_boomerang"}, {PROC_MIDNA, "d_a_midna"}, +#endif // TARGET_PC {PROC_NPC_TK, "d_a_npc_tk"}, {PROC_NPC_WORM, "d_a_npc_worm"}, {PROC_PPolamp, "d_a_ppolamp"}, {PROC_BkyRock, "d_a_obj_bky_rock"}, +#ifndef TARGET_PC {PROC_HITOBJ, "d_a_hitobj"}, {PROC_EP, "d_a_ep"}, +#endif // TARGET_PC {PROC_COW, "d_a_cow"}, {PROC_PERU, "d_a_peru"}, {PROC_NI, "d_a_ni"}, @@ -311,13 +331,17 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_MG_FISH, "d_a_mg_fish"}, {PROC_FSHOP, "d_a_mg_fshop"}, {PROC_NPC_DU, "d_a_npc_du"}, +#ifndef TARGET_PC {PROC_DISAPPEAR, "d_a_disappear"}, +#endif // TARGET_PC {PROC_Obj_Mato, "d_a_obj_mato"}, {PROC_Obj_Flag, "d_a_obj_flag"}, {PROC_Obj_Flag2, "d_a_obj_flag2"}, {PROC_Obj_Flag3, "d_a_obj_flag3"}, {PROC_Obj_GOMIKABE, "d_a_obj_gomikabe"}, +#ifndef TARGET_PC {PROC_Obj_Yousei, "d_a_obj_yousei"}, +#endif // TARGET_PC {PROC_Obj_Kabuto, "d_a_obj_kabuto"}, {PROC_Obj_Cho, "d_a_obj_cho"}, {PROC_Obj_Kuw, "d_a_obj_kuwagata"}, @@ -344,7 +368,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_Izumi_Gate, "d_a_izumi_gate"}, {PROC_Obj_Fchain, "d_a_obj_fchain"}, {PROC_Obj_Wchain, "d_a_obj_wchain"}, +#ifndef TARGET_PC {PROC_Tag_Attp, "d_a_tag_attention"}, +#endif // TARGET_PC {PROC_Obj_Tornado, "d_a_obj_tornado"}, {PROC_Obj_Tornado2, "d_a_obj_tornado2"}, {PROC_Obj_FirePillar, "d_a_obj_firepillar"}, @@ -536,7 +562,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_E_WAP, "d_a_e_warpappear"}, {PROC_Obj_SmallKey, "d_a_obj_smallkey"}, {PROC_Obj_Kantera, "d_a_obj_kantera"}, +#ifndef TARGET_PC {PROC_Obj_LifeContainer, "d_a_obj_life_container"}, +#endif // TARGET_PC {PROC_Obj_Shield, "d_a_obj_shield"}, {PROC_Demo_Item, "d_a_demo_item"}, #if !PLATFORM_SHIELD @@ -544,24 +572,32 @@ static DynamicNameTableEntry const DynamicNameTable[] = { #endif {PROC_Obj_Drop, "d_a_obj_drop"}, {PROC_OBJ_RW, "d_a_obj_rw"}, +#ifndef TARGET_PC {PROC_NBOMB, "d_a_nbomb"}, +#endif // TARGET_PC {PROC_TAG_CSW, "d_a_tag_csw"}, {PROC_TAG_QS, "d_a_tag_qs"}, {PROC_HOZELDA, "d_a_hozelda"}, #if !PLATFORM_SHIELD {PROC_SWC00, "d_a_swc00"}, #endif +#ifndef TARGET_PC {PROC_KNOB20, "d_a_door_knob00"}, {PROC_DBDOOR, "d_a_door_dbdoor00"}, +#endif // TARGET_PC {PROC_BOSS_DOOR, "d_a_door_boss"}, {PROC_L1BOSS_DOOR, "d_a_door_bossL1"}, {PROC_L1MBOSS_DOOR, "d_a_door_mbossL1"}, {PROC_L5BOSS_DOOR, "d_a_door_bossL5"}, +#ifndef TARGET_PC {PROC_DSHUTTER, "d_a_dshutter"}, {PROC_SPIRAL_DOOR, "d_a_door_spiral"}, +#endif // TARGET_PC {PROC_Tag_ChgRestart, "d_a_tag_chgrestart"}, {PROC_Tag_Restart, "d_a_tag_setrestart"}, +#ifndef TARGET_PC {PROC_ANDSW, "d_a_andsw"}, +#endif // TARGET_PC #if !PLATFORM_SHIELD {PROC_ANDSW2, "d_a_andsw2"}, #endif @@ -687,13 +723,17 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_NPC_MK, "d_a_npc_mk"}, #endif {PROC_NPC_P2, "d_a_npc_p2"}, +#ifndef TARGET_PC {PROC_KYTAG00, "d_a_kytag00"}, +#endif // TARGET_PC #if !PLATFORM_SHIELD {PROC_KYTAG01, "d_a_kytag01"}, #endif {PROC_KYTAG02, "d_a_kytag02"}, {PROC_KYTAG03, "d_a_kytag03"}, +#ifndef TARGET_PC {PROC_KYTAG04, "d_a_kytag04"}, +#endif // TARGET_PC {PROC_KYTAG05, "d_a_kytag05"}, {PROC_KYTAG06, "d_a_kytag06"}, {PROC_KYTAG07, "d_a_kytag07"}, @@ -706,7 +746,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_KYTAG14, "d_a_kytag14"}, {PROC_KYTAG15, "d_a_kytag15"}, {PROC_KYTAG16, "d_a_kytag16"}, +#ifndef TARGET_PC {PROC_KYTAG17, "d_a_kytag17"}, +#endif // TARGET_PC {PROC_Ykgr, "d_a_ykgr"}, {PROC_TALK, "d_a_talk"}, {PROC_Obj_Crope, "d_a_obj_crope"}, @@ -725,17 +767,21 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_Tag_Lv8Gate, "d_a_tag_Lv8Gate"}, {PROC_Tag_TheBHint, "d_a_tag_theB_hint"}, {PROC_Tag_Assist, "d_a_tag_assistance"}, +#ifndef TARGET_PC {PROC_DEMO00, "d_a_demo00"}, +#endif {PROC_TAG_CAMERA, "d_a_tag_camera"}, {PROC_TAG_CHKPOINT, "d_a_tag_chkpoint"}, #if !PLATFORM_SHIELD {PROC_TAG_EVENT, "d_a_tag_event"}, #endif +#ifndef TARGET_PC {PROC_TAG_EVT, "d_a_tag_evt"}, {PROC_TAG_TELOP, "d_a_tag_telop"}, {PROC_TAG_HOWL, "d_a_tag_howl"}, #if !PLATFORM_SHIELD {PROC_TAG_MSG, "d_a_tag_msg"}, + #endif {PROC_TAG_LANTERN, "d_a_tag_lantern"}, {PROC_Tag_Mist, "d_a_tag_mist"}, @@ -745,6 +791,7 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_BG, "d_a_bg"}, {PROC_SET_BG_OBJ, "d_a_set_bgobj"}, {PROC_BG_OBJ, "d_a_bg_obj"}, +#endif {PROC_MIRROR, "d_a_mirror"}, {PROC_MOVIE_PLAYER, "d_a_movie_player"}, #if !PLATFORM_SHIELD @@ -752,15 +799,21 @@ static DynamicNameTableEntry const DynamicNameTable[] = { #endif {PROC_FR, "d_a_fr"}, {PROC_ECONT, "d_a_econt"}, +#ifndef TARGET_PC {PROC_MG_ROD, "d_a_mg_rod"}, +#endif // TARGET_PC {PROC_E_ARROW, "d_a_e_arrow"}, {PROC_BULLET, "d_a_bullet"}, +#ifndef TARGET_PC {PROC_SWHIT0, "d_a_swhit0"}, +#endif // TARGET_PC {PROC_E_TH_BALL, "d_a_e_th_ball"}, +#ifndef TARGET_PC {PROC_TAG_EVTAREA, "d_a_tag_evtarea"}, {PROC_TAG_EVTMSG, "d_a_tag_evtmsg"}, {PROC_TAG_KMSG, "d_a_tag_kmsg"}, {PROC_TAG_PUSH, "d_a_tag_push"}, +#endif // TARGET_PC {PROC_E_MK_BO, "d_a_e_mk_bo"}, {PROC_E_MM_MT, "d_a_e_mm_mt"}, {PROC_OBJ_KBOX, "d_a_obj_kbox"}, @@ -768,7 +821,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_B_GOS, "d_a_b_gos"}, {PROC_OBJ_YSTONE, "d_a_obj_ystone"}, {PROC_MANT, "d_a_mant"}, +#ifndef TARGET_PC {PROC_CROD, "d_a_crod"}, +#endif // TARGET_PC {PROC_OBJ_PLEAF, "d_a_obj_pleaf"}, {PROC_OBJ_KBACKET, "d_a_obj_kbacket"}, {PROC_OBJ_YBAG, "d_a_obj_yel_bag"}, @@ -776,7 +831,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_OBJ_AUTOMATA, "d_a_obj_automata"}, {PROC_OBJ_GADGET, "d_a_obj_gadget"}, {PROC_OBJ_KAGO, "d_a_obj_kago"}, +#ifndef TARGET_PC {PROC_Obj_Carry, "d_a_obj_carry"}, +#endif // TARGET_PC {PROC_Obj_Stone, "d_a_obj_stone"}, {PROC_OBJ_HB, "d_a_obj_hb"}, {PROC_NPC_INKO, "d_a_npc_inko"}, @@ -786,12 +843,14 @@ static DynamicNameTableEntry const DynamicNameTable[] = { {PROC_E_BI_LEAF, "d_a_e_bi_leaf"}, {PROC_START_AND_GOAL, "d_a_startAndGoal"}, {PROC_NPC_DF, "d_a_npc_df"}, +#ifndef TARGET_PC {PROC_ARROW, "d_a_arrow"}, {PROC_PATH_LINE, "d_a_path_line"}, {PROC_TAG_ALLMATO, "d_a_tag_allmato"}, {PROC_Obj_Timer, "d_a_obj_timer"}, {PROC_SCENE_EXIT, "d_a_scene_exit"}, {PROC_SUSPEND, "d_a_suspend"}, +#endif // TARGET_PC #if !PLATFORM_SHIELD {PROC_GRASS, "d_a_grass"}, #endif @@ -912,6 +971,7 @@ int cDyl_LinkASync(s16 i_ProfName) { JUT_ASSERT(266, DMC_initialized); if (!cDyl_Initialized) { + printf("[DIAG] cDyl_LinkASync: NOT initialized yet, profName=%d\n", i_ProfName); fflush(stdout); OS_REPORT_ERROR("初期化が終わってないのに呼んでもらっても困ります %d %s\n", i_ProfName, fpcDbSv_getNameString(i_ProfName)); return cPhs_INIT_e; } @@ -932,10 +992,12 @@ int cDyl_LinkASync(s16 i_ProfName) { return cPhs_COMPLEATE_e; } else { // "cDyl_LinkASync: Link failed. Returning\n" + printf("[DIAG] cDyl_LinkASync: link FAILED for profName=%d\n", i_ProfName); fflush(stdout); OSReport_Error("cDyl_LinkASync: リンクに失敗しました。諦めます\n"); return cPhs_ERROR_e; } } else { + printf("[DIAG] cDyl_LinkASync: load_async not ready for profName=%d\n", i_ProfName); fflush(stdout); return cPhs_INIT_e; } } @@ -944,16 +1006,29 @@ int cDyl_LinkASync(s16 i_ProfName) { } static int cDyl_InitCallback(void* param_0) { + printf("[DIAG] cDyl_InitCallback: START\n"); fflush(stdout); JUT_ASSERT(335, !cDyl_Initialized); +#ifdef TARGET_PC + // On PC, the profile list is statically linked (g_fpcPf_ProfileList_p in f_pc_profile.cpp). + // Skip DVD-based REL loading and string table — OSLink/OSLinkFixed are stubs. + cDyl_Initialized = true; + fopScnM_CreateReq(PROC_LOGO_SCENE, 0x7FFF, 0, 0); + printf("[DIAG] cDyl_InitCallback: PROC_LOGO_SCENE created (PC path), DONE\n"); fflush(stdout); + return 1; +#else #if PLATFORM_GCN JKRHeap* parentHeap = mDoExt_getArchiveHeap(); #else JKRHeap* parentHeap = DynamicModuleControlBase::getHeap(); #endif + printf("[DIAG] cDyl_InitCallback: parentHeap=%p\n", parentHeap); fflush(stdout); JKRFileCache* loader = JKRMountDvdDrive("/", parentHeap, NULL); + printf("[DIAG] cDyl_InitCallback: JKRMountDvdDrive loader=%p\n", loader); fflush(stdout); + DynamicModuleControl::initialize(); + printf("[DIAG] cDyl_InitCallback: DynamicModuleControl::initialize done\n"); fflush(stdout); #if PLATFORM_GCN void* strTbl = JKRGetResource("/dvd/str/Final/Release/frameworkF.str"); @@ -962,17 +1037,22 @@ static int cDyl_InitCallback(void* param_0) { #else void* strTbl = JKRGetResource("/dvd/str/Final/Release/frameworkF.str"); #endif + printf("[DIAG] cDyl_InitCallback: frameworkF.str=%p\n", strTbl); fflush(stdout); JKRDetachResource(strTbl, loader); JKRUnmountDvdDrive(loader); OSSetStringTable(strTbl); DynamicModuleControl dmc("f_pc_profile_lst"); + printf("[DIAG] cDyl_InitCallback: linking f_pc_profile_lst...\n"); fflush(stdout); dmc.link(); + printf("[DIAG] cDyl_InitCallback: link done\n"); fflush(stdout); cDyl_Initialized = true; fopScnM_CreateReq(PROC_LOGO_SCENE, 0x7FFF, 0, 0); + printf("[DIAG] cDyl_InitCallback: PROC_LOGO_SCENE created, DONE\n"); fflush(stdout); return 1; +#endif } static mDoDvdThd_callback_c* cDyl_DVD; diff --git a/src/d/actor/d_a_alink_effect.inc b/src/d/actor/d_a_alink_effect.inc index 97e4d1dc7c..7af8e88645 100644 --- a/src/d/actor/d_a_alink_effect.inc +++ b/src/d/actor/d_a_alink_effect.inc @@ -1246,7 +1246,7 @@ void daAlink_c::setWolfDigEffect() { } else if (field_0x3198 == 7) { var_r29 = 0; var_r28 = ID_ZI_J_DASHWTRA_C; - setEmitterPolyColor(&field_0x32cc, ID_ZI_J_DASHWTRA_A, mPolyInfo2, &field_0x37d4, &sp18); + setEmitterPolyColor((u32*)&field_0x32cc, ID_ZI_J_DASHWTRA_A, mPolyInfo2, &field_0x37d4, &sp18); setEmitterPolyColor(&field_0x31bc, ID_ZI_J_DASHWTRA_B, mPolyInfo2, &field_0x37d4, &sp18); } else { var_r29 = 0; @@ -1281,7 +1281,7 @@ void daAlink_c::setWolfSwimEndEffect(JPABaseEmitter** param_0, JPABaseEmitter** var_r30 = 1; } - *param_0 = setEmitterColor(&field_0x32cc, name0[var_r30], &field_0x37c8, &shape_angle); + *param_0 = setEmitterColor((u32*)&field_0x32cc, name0[var_r30], &field_0x37c8, &shape_angle); if (var_r30 != 0) { *param_1 = setEmitterColor(&field_0x31bc, name1[var_r30], &field_0x37c8, &shape_angle); @@ -2111,10 +2111,10 @@ BOOL daAlink_lockCursor_c::create() { return false; } - field_0xc = mScrn->search('n_all'); - mCursor0 = mScrn->search('cursor0'); - mCursor1 = mScrn->search('cursor1'); - mCursor2 = mScrn->search('cursor2'); + field_0xc = mScrn->search(MULTI_CHAR('n_all')); + mCursor0 = mScrn->search(MULTI_CHAR('cursor0')); + mCursor1 = mScrn->search(MULTI_CHAR('cursor1')); + mCursor2 = mScrn->search(MULTI_CHAR('cursor2')); field_0x28->searchUpdateMaterialID(mScrn); field_0xc->setAnimation(field_0x28); @@ -2127,8 +2127,7 @@ BOOL daAlink_lockCursor_c::create() { mCursor0->setAnimation(field_0x24); mCursor1->setAnimation(field_0x24); mCursor2->setAnimation(field_0x24); - J2DPane* sp8 = mScrn->search('flash'); - sp8->setAnimation(field_0x24); + mScrn->search(MULTI_CHAR('flash'))->setAnimation(field_0x24); field_0x24->setFrame(0.0f); field_0x1c->searchUpdateMaterialID(mScrn); diff --git a/src/d/actor/d_a_alink_kandelaar.inc b/src/d/actor/d_a_alink_kandelaar.inc index d2769b7f24..1971358990 100644 --- a/src/d/actor/d_a_alink_kandelaar.inc +++ b/src/d/actor/d_a_alink_kandelaar.inc @@ -196,8 +196,8 @@ void daAlink_c::preKandelaarDraw() { field_0x32c8 = 0; } - f32 near = dComIfGd_getView()->near; - f32 far = dComIfGd_getView()->far; + f32 near_ = dComIfGd_getView()->near_; + f32 far_ = dComIfGd_getView()->far_; mDoLib_pos2camera(&mKandelaarFlamePos, &proj); proj.z += 30.0f; @@ -205,7 +205,7 @@ void daAlink_c::preKandelaarDraw() { proj.z = -0.01f; } - field_0x344c = ((near + (far * near) / proj.z) / (far - near) + 1.0f) * 1.6777215E7f; + field_0x344c = ((near_ + (far_ * near_) / proj.z) / (far_ - near_) + 1.0f) * 1.6777215E7f; } void daAlink_c::setKandelaarModel() { diff --git a/src/d/actor/d_a_b_ds.cpp b/src/d/actor/d_a_b_ds.cpp index 88b5c8042a..530bf1f038 100644 --- a/src/d/actor/d_a_b_ds.cpp +++ b/src/d/actor/d_a_b_ds.cpp @@ -5703,4 +5703,9 @@ actor_process_profile_definition g_profile_B_DS = { fopAc_CULLBOX_CUSTOM_e, }; +#ifndef __MWERKS__ +cXyz daB_DS_c::getHandPosR() { return mHandPos[1]; } +cXyz daB_DS_c::getHandPosL() { return mHandPos[0]; } +#endif + AUDIO_INSTANCES; diff --git a/src/d/actor/d_a_balloon_2D.cpp b/src/d/actor/d_a_balloon_2D.cpp index 4584d696ff..f19c81c90b 100644 --- a/src/d/actor/d_a_balloon_2D.cpp +++ b/src/d/actor/d_a_balloon_2D.cpp @@ -164,18 +164,18 @@ int daBalloon2D_c::createHeap() { JKRArchive* arc = resInfo->getArchive(); mScreen->setPriority("zelda_balloon_game.blo", 0x20000, arc); dPaneClass_showNullPane(mScreen); - field_0x578 = new CPaneMgr(mScreen, 'n_all', 2, NULL); - field_0x57c = new CPaneMgr(mScreen, 'score_tn', 0, NULL); - field_0x580 = new CPaneMgr(mScreen, 'suji_n', 2, NULL); - field_0x584 = new CPaneMgr(mScreen, 's_set_n', 0, NULL); - field_0x588 = new CPaneMgr(mScreen, 'tas_n', 0, NULL); - field_0x58c = new CPaneMgr(mScreen, 'combo_tn', 0, NULL); - field_0x590 = new CPaneMgr(mScreen, 'num_n', 0, NULL); - field_0x594 = new CPaneMgr(mScreen, 'co_set_n', 2, NULL); - field_0x598 = new CPaneMgr(mScreen, 'bal_3_n', 2, NULL); - field_0x59c = new CPaneMgr(mScreen, 'bal_2_n', 2, NULL); - field_0x5a0 = new CPaneMgr(mScreen, 'bal_1_n', 2, NULL); - field_0x5a4 = new CPaneMgr(mScreen, 'ba_com_n', 2, NULL); + field_0x578 = new CPaneMgr(mScreen, MULTI_CHAR('n_all'), 2, NULL); + field_0x57c = new CPaneMgr(mScreen, MULTI_CHAR('score_tn'), 0, NULL); + field_0x580 = new CPaneMgr(mScreen, MULTI_CHAR('suji_n'), 2, NULL); + field_0x584 = new CPaneMgr(mScreen, MULTI_CHAR('s_set_n'), 0, NULL); + field_0x588 = new CPaneMgr(mScreen, MULTI_CHAR('tas_n'), 0, NULL); + field_0x58c = new CPaneMgr(mScreen, MULTI_CHAR('combo_tn'), 0, NULL); + field_0x590 = new CPaneMgr(mScreen, MULTI_CHAR('num_n'), 0, NULL); + field_0x594 = new CPaneMgr(mScreen, MULTI_CHAR('co_set_n'), 2, NULL); + field_0x598 = new CPaneMgr(mScreen, MULTI_CHAR('bal_3_n'), 2, NULL); + field_0x59c = new CPaneMgr(mScreen, MULTI_CHAR('bal_2_n'), 2, NULL); + field_0x5a0 = new CPaneMgr(mScreen, MULTI_CHAR('bal_1_n'), 2, NULL); + field_0x5a4 = new CPaneMgr(mScreen, MULTI_CHAR('ba_com_n'), 2, NULL); field_0x578->setAlphaRate(0.0f); field_0x5a4->setAlphaRate(0.0f); for (s32 i = 0; i < 10; i++) { @@ -196,17 +196,17 @@ int daBalloon2D_c::createHeap() { } J2DTextBox* combos[2]; J2DTextBox* scores[2]; - combos[0] = (J2DTextBox*)mScreen->search('combo_ts'); - combos[1] = (J2DTextBox*)mScreen->search('combo_t'); - scores[0] = (J2DTextBox*)mScreen->search('score_ts'); - scores[1] = (J2DTextBox*)mScreen->search('score_t'); - field_0x5a8[0] = (J2DPicture*)mScreen->search('suji_4'); - field_0x5a8[1] = (J2DPicture*)mScreen->search('suji_3'); - field_0x5a8[2] = (J2DPicture*)mScreen->search('suji_2'); - field_0x5a8[3] = (J2DPicture*)mScreen->search('suji_1'); - field_0x5a8[4] = (J2DPicture*)mScreen->search('suji_0'); - field_0x5a8[5] = (J2DPicture*)mScreen->search('num_1'); - field_0x5a8[6] = (J2DPicture*)mScreen->search('num_0'); + combos[0] = (J2DTextBox*)mScreen->search(MULTI_CHAR('combo_ts')); + combos[1] = (J2DTextBox*)mScreen->search(MULTI_CHAR('combo_t')); + scores[0] = (J2DTextBox*)mScreen->search(MULTI_CHAR('score_ts')); + scores[1] = (J2DTextBox*)mScreen->search(MULTI_CHAR('score_t')); + field_0x5a8[0] = (J2DPicture*)mScreen->search(MULTI_CHAR('suji_4')); + field_0x5a8[1] = (J2DPicture*)mScreen->search(MULTI_CHAR('suji_3')); + field_0x5a8[2] = (J2DPicture*)mScreen->search(MULTI_CHAR('suji_2')); + field_0x5a8[3] = (J2DPicture*)mScreen->search(MULTI_CHAR('suji_1')); + field_0x5a8[4] = (J2DPicture*)mScreen->search(MULTI_CHAR('suji_0')); + field_0x5a8[5] = (J2DPicture*)mScreen->search(MULTI_CHAR('num_1')); + field_0x5a8[6] = (J2DPicture*)mScreen->search(MULTI_CHAR('num_0')); for (int i = 0; i < 2; i++) { combos[i]->setString(32, ""); scores[i]->setString(32, ""); diff --git a/src/d/actor/d_a_boomerang.cpp b/src/d/actor/d_a_boomerang.cpp index 6a37355dba..59ee181d4c 100644 --- a/src/d/actor/d_a_boomerang.cpp +++ b/src/d/actor/d_a_boomerang.cpp @@ -158,10 +158,10 @@ static const u32 l_lockSeFlg[BOOMERANG_LOCK_MAX] = { }; void daBoomerang_sight_c::initialize() { - m_cursorYellowAllPane = m_cursorYellowScrn->search('n_all'); - m_cursorYellow0Pane = m_cursorYellowScrn->search('cursor0'); - m_cursorYellow1Pane = m_cursorYellowScrn->search('cursor1'); - m_cursorYellow2Pane = m_cursorYellowScrn->search('cursor2'); + m_cursorYellowAllPane = m_cursorYellowScrn->search(MULTI_CHAR('n_all')); + m_cursorYellow0Pane = m_cursorYellowScrn->search(MULTI_CHAR('cursor0')); + m_cursorYellow1Pane = m_cursorYellowScrn->search(MULTI_CHAR('cursor1')); + m_cursorYellow2Pane = m_cursorYellowScrn->search(MULTI_CHAR('cursor2')); m_cursorYellowBck->searchUpdateMaterialID(m_cursorYellowScrn); m_cursorYellowAllPane->setAnimation(m_cursorYellowBck); @@ -174,7 +174,7 @@ void daBoomerang_sight_c::initialize() { m_cursorYellow0Pane->setAnimation(m_cursorYellowBpk); m_cursorYellow1Pane->setAnimation(m_cursorYellowBpk); m_cursorYellow2Pane->setAnimation(m_cursorYellowBpk); - m_cursorYellowScrn->search('flash')->setAnimation(m_cursorYellowBpk); + m_cursorYellowScrn->search(MULTI_CHAR('flash'))->setAnimation(m_cursorYellowBpk); m_cursorYellowBpk->setFrame(0.0f); m_cursorYellow2Brk->searchUpdateMaterialID(m_cursorYellowScrn); @@ -192,10 +192,10 @@ void daBoomerang_sight_c::initialize() { m_cursorYellowScrn->setUserInfo('n_43'); m_cursorYellowAllPane->setUserInfo(' '); - m_cursorRedAllPane = m_cursorRedScrn->search('n_all'); - m_cursorRed0Pane = m_cursorRedScrn->search('cursor0'); - m_cursorRed1Pane = m_cursorRedScrn->search('cursor1'); - m_cursorRed2Pane = m_cursorRedScrn->search('cursor2'); + m_cursorRedAllPane = m_cursorRedScrn->search(MULTI_CHAR('n_all')); + m_cursorRed0Pane = m_cursorRedScrn->search(MULTI_CHAR('cursor0')); + m_cursorRed1Pane = m_cursorRedScrn->search(MULTI_CHAR('cursor1')); + m_cursorRed2Pane = m_cursorRedScrn->search(MULTI_CHAR('cursor2')); m_cursorRedAllPane->setAnimation(m_cursorYellowBck); m_cursorRed0Pane->setAnimation(m_cursorYellowBck); @@ -204,7 +204,7 @@ void daBoomerang_sight_c::initialize() { m_cursorRed0Pane->setAnimation(m_cursorYellowBpk); m_cursorRed1Pane->setAnimation(m_cursorYellowBpk); m_cursorRed2Pane->setAnimation(m_cursorYellowBpk); - m_cursorRedScrn->search('flash')->setAnimation(m_cursorYellowBpk); + m_cursorRedScrn->search(MULTI_CHAR('flash'))->setAnimation(m_cursorYellowBpk); m_cursorRed2Brk->searchUpdateMaterialID(m_cursorRedScrn); m_cursorRedBrk->searchUpdateMaterialID(m_cursorRedScrn); @@ -221,10 +221,10 @@ void daBoomerang_sight_c::initialize() { m_cursorRedScrn->setUserInfo('n_43'); m_cursorRedAllPane->setUserInfo(' '); - m_cursorOrangeAllPane = m_cursorOrangeScrn->search('n_all'); - m_cursorOrange0Pane = m_cursorOrangeScrn->search('cursor0'); - m_cursorOrange1Pane = m_cursorOrangeScrn->search('cursor1'); - m_cursorOrange2Pane = m_cursorOrangeScrn->search('cursor2'); + m_cursorOrangeAllPane = m_cursorOrangeScrn->search(MULTI_CHAR('n_all')); + m_cursorOrange0Pane = m_cursorOrangeScrn->search(MULTI_CHAR('cursor0')); + m_cursorOrange1Pane = m_cursorOrangeScrn->search(MULTI_CHAR('cursor1')); + m_cursorOrange2Pane = m_cursorOrangeScrn->search(MULTI_CHAR('cursor2')); m_cursorOrangeAllPane->setAnimation(m_cursorYellowBck); m_cursorOrange0Pane->setAnimation(m_cursorYellowBck); @@ -233,7 +233,7 @@ void daBoomerang_sight_c::initialize() { m_cursorOrange0Pane->setAnimation(m_cursorYellowBpk); m_cursorOrange1Pane->setAnimation(m_cursorYellowBpk); m_cursorOrange2Pane->setAnimation(m_cursorYellowBpk); - m_cursorOrangeScrn->search('flash')->setAnimation(m_cursorYellowBpk); + m_cursorOrangeScrn->search(MULTI_CHAR('flash'))->setAnimation(m_cursorYellowBpk); m_cursorOrange2Brk->searchUpdateMaterialID(m_cursorOrangeScrn); m_cursorOrangeBrk->searchUpdateMaterialID(m_cursorOrangeScrn); diff --git a/src/d/actor/d_a_coach_2D.cpp b/src/d/actor/d_a_coach_2D.cpp index fd21f2dac0..e6a4fa52f2 100644 --- a/src/d/actor/d_a_coach_2D.cpp +++ b/src/d/actor/d_a_coach_2D.cpp @@ -124,13 +124,13 @@ int daCoach2D_c::createHeap() { mpFireIconBrk->searchUpdateMaterialID(mpScrn); setBrkAnime(true); - mpPaneAll = new CPaneMgr(mpScrn, 'n_all', 2, NULL); - mpPaneBasha = new CPaneMgr(mpScrn, 'basha_n', 2, NULL); - mpPaneFire = new CPaneMgr(mpScrn, 'fire_n', 2, NULL); + mpPaneAll = new CPaneMgr(mpScrn, MULTI_CHAR('n_all'), 2, NULL); + mpPaneBasha = new CPaneMgr(mpScrn, MULTI_CHAR('basha_n'), 2, NULL); + mpPaneFire = new CPaneMgr(mpScrn, MULTI_CHAR('fire_n'), 2, NULL); - mpScrn->search('fire_b_n')->move(mpPaneFire->getPosX(), mpPaneFire->getPosY()); + mpScrn->search(MULTI_CHAR('fire_b_n'))->move(mpPaneFire->getPosX(), mpPaneFire->getPosY()); - mpPaneFireB = new CPaneMgr(mpScrn, 'fire_b_n', 2, NULL); + mpPaneFireB = new CPaneMgr(mpScrn, MULTI_CHAR('fire_b_n'), 2, NULL); mMsgLight = new dMsgScrnLight_c(6, 0xFF); @@ -287,7 +287,7 @@ void daCoach2D_c::update() { icon_pos_x -= var_f29; } - f32 var_f30 = 4.0f * ((J2DPicture*)mpScrn->search('basha_p0'))->getWhite().r; + f32 var_f30 = 4.0f * ((J2DPicture*)mpScrn->search(MULTI_CHAR('basha_p0')))->getWhite().r; if (var_f30 > 255.0f) { var_f30 = 255.0f; } @@ -319,14 +319,14 @@ void daCoach2D_c::setBrkAnime(bool param_0) { if (mBrkFrame >= mpFireIconBrk->getFrameMax()) { mBrkFrame -= mpFireIconBrk->getFrameMax(); } - mpScrn->search('basha_f0')->show(); + mpScrn->search(MULTI_CHAR('basha_f0'))->show(); } else { - mpScrn->search('basha_f0')->hide(); + mpScrn->search(MULTI_CHAR('basha_f0'))->hide(); mBrkFrame = 0.0f; } mpFireIconBrk->setFrame(mBrkFrame); - mpScrn->search('basha_p0')->setAnimation(mpFireIconBrk); + mpScrn->search(MULTI_CHAR('basha_p0'))->setAnimation(mpFireIconBrk); } static int daCoach2D_create(daCoach2D_c* i_this) { diff --git a/src/d/actor/d_a_door_mbossL1.cpp b/src/d/actor/d_a_door_mbossL1.cpp index d752b14ba3..1636dd22b9 100644 --- a/src/d/actor/d_a_door_mbossL1.cpp +++ b/src/d/actor/d_a_door_mbossL1.cpp @@ -247,7 +247,7 @@ int daMBdoorL1_c::getDoorType() { char* daMBdoorL1_c::getOpenAnm() { if (getDoorType() == DOOR_TYPE_1) { - return"oj_DoorOpD.bck"; + return "oj_DoorOpD.bck"; } if (getDoorType() == DOOR_TYPE_0) { return "oj_DoorOpC.bck"; @@ -257,7 +257,7 @@ char* daMBdoorL1_c::getOpenAnm() { char* daMBdoorL1_c::getCloseAnm() { if (getDoorType() == DOOR_TYPE_1) { - return"oj_DoorCloseD.bck"; + return "oj_DoorCloseD.bck"; } if (getDoorType() == DOOR_TYPE_0) { return "oj_DoorCloseC.bck"; @@ -271,7 +271,7 @@ char* daMBdoorL1_c::getBmd() { case 11: return "door-knob_00.bmd"; default: - return"door-shutter_00.bmd"; + return "door-shutter_00.bmd"; } } diff --git a/src/d/actor/d_a_e_arrow.cpp b/src/d/actor/d_a_e_arrow.cpp index 9827237349..79edf1938e 100644 --- a/src/d/actor/d_a_e_arrow.cpp +++ b/src/d/actor/d_a_e_arrow.cpp @@ -358,69 +358,69 @@ static void e_arrow_demo_fire(e_arrow_class* i_this) { } i_this->mTimers[0] = 20; - case 1: - spB0.set(0, i_this->field_0xa0c, 0); + case 1: { + spB0.set(0, i_this->field_0xa0c, 0); - static u16 fire_name[] = {0x84EE, 0x84EF, 0x84F0, 0x84F1}; + static u16 fire_name[] = {0x84EE, 0x84EF, 0x84F0, 0x84F1}; - for (int i = 0; i < 4; i++) { - i_this->field_0x9f0[i] = dComIfGp_particle_set(i_this->field_0x9f0[i], fire_name[i], - &i_this->field_0xa00, &spB0, NULL); + for (int i = 0; i < 4; i++) { + i_this->field_0x9f0[i] = dComIfGp_particle_set(i_this->field_0x9f0[i], fire_name[i], + &i_this->field_0xa00, &spB0, NULL); - dComIfGp_particle_levelEmitterOnEventMove(i_this->field_0x9f0[i]); - } - - if (i_this->mTimers[0] == 0) { - daPy_py_c* player_p = (daPy_py_c*)dComIfGp_getPlayer(0); - - f32 var_f31; - if (i_this->field_0xa0c == 0) { - var_f31 = 41200.0f; - sp9C.z = -700.0f; - } else { - var_f31 = 36800.0f; - sp9C.z = 700.0f; + dComIfGp_particle_levelEmitterOnEventMove(i_this->field_0x9f0[i]); } - if (!player_p->checkWolfDig() && - (!dComIfGp_event_runCheck() || - fopAcM_getTalkEventPartner(daPy_getLinkPlayerActorClass()) != - (fopAc_ac_c*)daPy_py_c::getMidnaActor())) - { - if (!dMsgObject_isTalkNowCheck()) { - cLib_addCalc2(&i_this->field_0xa00.z, var_f31, 0.1f, i_this->field_0xa10); + if (i_this->mTimers[0] == 0) { + daPy_py_c* player_p = (daPy_py_c*)dComIfGp_getPlayer(0); + + f32 var_f31; + if (i_this->field_0xa0c == 0) { + var_f31 = 41200.0f; + sp9C.z = -700.0f; + } else { + var_f31 = 36800.0f; + sp9C.z = 700.0f; } - } - if (i_this->field_0xa0c == 0 && fpcM_Search(s_limit_sub, i_this) != NULL) { - dBgS_ObjGndChk gnd_chk; - sp9C = player_p->current.pos; - sp9C.y += 200.0f; - gnd_chk.SetPos(&sp9C); - - if (dComIfG_Bgsp().GroundCross(&gnd_chk) > -10000.0f) { - i_this->mMode = 2; - return; + if (!player_p->checkWolfDig() && + (!dComIfGp_event_runCheck() || + fopAcM_getTalkEventPartner(daPy_getLinkPlayerActorClass()) != + (fopAc_ac_c*)daPy_py_c::getMidnaActor())) + { + if (!dMsgObject_isTalkNowCheck()) { + cLib_addCalc2(&i_this->field_0xa00.z, var_f31, 0.1f, i_this->field_0xa10); + } } + + if (i_this->field_0xa0c == 0 && fpcM_Search(s_limit_sub, i_this) != NULL) { + dBgS_ObjGndChk gnd_chk; + sp9C = player_p->current.pos; + sp9C.y += 200.0f; + gnd_chk.SetPos(&sp9C); + + if (dComIfG_Bgsp().GroundCross(&gnd_chk) > -10000.0f) { + i_this->mMode = 2; + return; + } + } + + cLib_addCalc2(&i_this->field_0xa10, 10.0f, 1.0f, 1.0f); + + if (!dComIfGp_event_runCheck()) { + sp9C.y = 0.0f; + sp9C.x = 0.0f; + + i_this->mCcFireEffSph.SetC(i_this->field_0xa00 + sp9C); + i_this->mCcFireEffSph.SetR(800.0f); + dComIfG_Ccsp()->Set(&i_this->mCcFireEffSph); + } + + i_this->mpModel = NULL; } - cLib_addCalc2(&i_this->field_0xa10, 10.0f, 1.0f, 1.0f); - - if (!dComIfGp_event_runCheck()) { - sp9C.y = 0.0f; - sp9C.x = 0.0f; - - i_this->mCcFireEffSph.SetC(i_this->field_0xa00 + sp9C); - i_this->mCcFireEffSph.SetR(800.0f); - dComIfG_Ccsp()->Set(&i_this->mCcFireEffSph); - } - - i_this->mpModel = NULL; - } - - Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_STRAWFENCE_BURNING, &i_this->field_0xa00, 0, 0, 1.0f, - 1.0f, -1.0f, -1.0f, 0); - break; + Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_STRAWFENCE_BURNING, &i_this->field_0xa00, 0, 0, + 1.0f, 1.0f, -1.0f, -1.0f, 0); + } break; case 2: dMeter2Info_getMeterClass()->setLifeZero(); break; diff --git a/src/d/actor/d_a_e_dd.cpp b/src/d/actor/d_a_e_dd.cpp index e0de6cb03f..1094366738 100644 --- a/src/d/actor/d_a_e_dd.cpp +++ b/src/d/actor/d_a_e_dd.cpp @@ -336,7 +336,7 @@ static BOOL way_bg_check(e_dd_class* i_this, f32 param_2) { return FALSE; } -u8 hio_set; +static u8 hio_set; static daE_DD_HIO_c l_HIO; diff --git a/src/d/actor/d_a_e_dn.cpp b/src/d/actor/d_a_e_dn.cpp index 794458bbe6..c68d2510bf 100644 --- a/src/d/actor/d_a_e_dn.cpp +++ b/src/d/actor/d_a_e_dn.cpp @@ -354,13 +354,13 @@ static BOOL other_bg_check2(e_dn_class* i_this, cXyz* i_pos) { return FALSE; } -u8 hio_set; +static u8 hio_set; -daE_DN_HIO_c l_HIO; +static daE_DN_HIO_c l_HIO; -fopAc_ac_c* target_info[10]; +static fopAc_ac_c* target_info[10]; -int target_info_count; +static int target_info_count; static void* s_b_sub(void* i_actor, void* i_data) { if (fopAcM_IsActor(i_actor) && dBomb_c::checkBombActor((fopAc_ac_c*)i_actor) && !((dBomb_c*)i_actor)->checkStateExplode() && target_info_count < 10) { @@ -2978,7 +2978,7 @@ static void anm_se_set(e_dn_class* i_this) { } } -int c_start; +static int c_start; static int daE_DN_Execute(e_dn_class* i_this) { if (i_this->status != 0) { @@ -3298,9 +3298,9 @@ static int daE_DN_Delete(e_dn_class* i_this) { return 1; } -Vec jv_offset = { 0.0f, 0.0f, 0.0f }; +static Vec jv_offset = { 0.0f, 0.0f, 0.0f }; -dJntColData_c jc_data[12] = { +static dJntColData_c jc_data[12] = { {0, 1, 2, 40.0f, &jv_offset}, {0, 1, 3, 30.0f, &jv_offset}, {0, 1, 22, 40.0f, &jv_offset}, {0, 1, 11, 15.0f, &jv_offset}, {0, 1, 12, 10.0f, &jv_offset}, {0, 1, 17, 15.0f, &jv_offset}, diff --git a/src/d/actor/d_a_e_fb.cpp b/src/d/actor/d_a_e_fb.cpp index 1fbbbc2410..877e43d537 100644 --- a/src/d/actor/d_a_e_fb.cpp +++ b/src/d/actor/d_a_e_fb.cpp @@ -127,7 +127,7 @@ static f32 dummy_117095() { } #endif -bool hio_set; +static bool hio_set; static daE_FB_HIO_c l_HIO; diff --git a/src/d/actor/d_a_e_mf.cpp b/src/d/actor/d_a_e_mf.cpp index 42ad76cfd7..0c3c101416 100644 --- a/src/d/actor/d_a_e_mf.cpp +++ b/src/d/actor/d_a_e_mf.cpp @@ -289,13 +289,13 @@ static BOOL other_bg_check2(e_mf_class* i_this, cXyz* param_2) { return FALSE; } -u8 hio_set; +static u8 hio_set; -daE_MF_HIO_c l_HIO; +static daE_MF_HIO_c l_HIO; -fopAc_ac_c* target_info[10]; +static fopAc_ac_c* target_info[10]; -int target_info_count; +static int target_info_count; static void* s_b_sub(void* i_actor, void* i_data) { if (fopAcM_IsActor(i_actor) && dBomb_c::checkBombActor((fopAc_ac_c*)i_actor) && !((dBomb_c*)i_actor)->checkStateExplode() && target_info_count < 10) { @@ -2773,7 +2773,7 @@ static void anm_se_set(e_mf_class* i_this) { } } -int c_start; +static int c_start; static int daE_MF_Execute(e_mf_class* i_this) { fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; @@ -3085,9 +3085,9 @@ static int daE_MF_Delete(e_mf_class* i_this) { return 1; } -Vec jv_offset = { 0.0f, 0.0f, 0.0f }; +static Vec jv_offset = { 0.0f, 0.0f, 0.0f }; -dJntColData_c jc_data[12] = { +static dJntColData_c jc_data[12] = { {0, 1, 2, 40.0f, &jv_offset}, {0, 1, 3, 30.0f, &jv_offset}, {0, 1, 22, 40.0f, &jv_offset}, {0, 1, 11, 15.0f, &jv_offset}, {0, 1, 12, 10.0f, &jv_offset}, {0, 1, 17, 15.0f, &jv_offset}, diff --git a/src/d/actor/d_a_e_mk.cpp b/src/d/actor/d_a_e_mk.cpp index fef3a86675..c5b4b7a34c 100644 --- a/src/d/actor/d_a_e_mk.cpp +++ b/src/d/actor/d_a_e_mk.cpp @@ -137,7 +137,7 @@ static cXyz STAGE_CENTER_POS; static s16 STAGE_ANGLE_Y; -u8 hio_set; +static u8 hio_set; static daE_MK_HIO_c l_HIO; diff --git a/src/d/actor/d_a_e_nz.cpp b/src/d/actor/d_a_e_nz.cpp index 738d01b3bf..59f4258f7e 100644 --- a/src/d/actor/d_a_e_nz.cpp +++ b/src/d/actor/d_a_e_nz.cpp @@ -129,7 +129,7 @@ static int daE_NZ_Draw(e_nz_class* i_this) { return 1; } -bool hio_set; +static bool hio_set; static daE_NZ_HIO_c l_HIO; diff --git a/src/d/actor/d_a_e_vt.cpp b/src/d/actor/d_a_e_vt.cpp index a9d716acd0..a0fc8b926c 100644 --- a/src/d/actor/d_a_e_vt.cpp +++ b/src/d/actor/d_a_e_vt.cpp @@ -873,7 +873,7 @@ void daE_VA_c::setFireEffect(int param_0) { dComIfGp_particle_set(field_0x10f80[idx + 2], 0x3AE, &field_0x1140[param_0], NULL, &scale); } -f32 dummy() { +static f32 dummy() { return 3.2f; } diff --git a/src/d/actor/d_a_e_ymb.cpp b/src/d/actor/d_a_e_ymb.cpp index c1d39eccec..2ef563ca6e 100644 --- a/src/d/actor/d_a_e_ymb.cpp +++ b/src/d/actor/d_a_e_ymb.cpp @@ -1117,7 +1117,7 @@ void daE_YMB_c::executeFlyAttack() { setInclination(); break; - case 5: + case 5: { setElecEffect2(); field_0x704 = 3; field_0x712 = 1; @@ -1141,7 +1141,9 @@ void daE_YMB_c::executeFlyAttack() { } static s16 ymb_chance_time[3] = { - 110, 80, 50, + 110, + 80, + 50, }; if (field_0x6fc == 0) { mMode = 9; @@ -1151,7 +1153,7 @@ void daE_YMB_c::executeFlyAttack() { } setInclination(); - break; + } break; case 9: case 10: diff --git a/src/d/actor/d_a_e_yr.cpp b/src/d/actor/d_a_e_yr.cpp index f329c48a9a..a5dfd55d9d 100644 --- a/src/d/actor/d_a_e_yr.cpp +++ b/src/d/actor/d_a_e_yr.cpp @@ -1716,7 +1716,7 @@ static void e_yr_su_wait_move(e_yr_class* i_this) { } } -f32 dummy() { +static f32 dummy() { return -50.0f; } diff --git a/src/d/actor/d_a_e_zm.cpp b/src/d/actor/d_a_e_zm.cpp index e8cc184b1a..6432a9acf8 100644 --- a/src/d/actor/d_a_e_zm.cpp +++ b/src/d/actor/d_a_e_zm.cpp @@ -384,7 +384,7 @@ void daE_ZM_c::executeWait() { } break; - case MODE_2: + case MODE_2: { mStts.Move(); mCyl.OffTgSetBit(); mCyl.OffCoSetBit(); @@ -406,6 +406,7 @@ void daE_ZM_c::executeWait() { mSound.startCreatureSound(Z2SE_EN_ZM_DISAPPER, 0, -1); mMode++; + } // fallthrough case MODE_3: cLib_addCalc0(&field_0x6f4.x, 0.7f, 1.0f); diff --git a/src/d/actor/d_a_mant.cpp b/src/d/actor/d_a_mant.cpp index a65520e4da..f8c8180894 100644 --- a/src/d/actor/d_a_mant.cpp +++ b/src/d/actor/d_a_mant.cpp @@ -284,8 +284,8 @@ void daMant_packet_c::draw() { dKy_Global_amb_set(this->mTevStr); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevColor(GX_TEVREG0, (GXColor){1, 0, 0, 0}); - GXSetTevKColor(GX_KCOLOR0, (GXColor){1, 0, 0, 0}); + GXSetTevColor(GX_TEVREG0, COMPOUND_LITERAL(GXColor){1, 0, 0, 0}); + GXSetTevKColor(GX_KCOLOR0, COMPOUND_LITERAL(GXColor){1, 0, 0, 0}); GXSetTevKColorSel(GX_TEVSTAGE0, GX_TEV_KCSEL_K0); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_KONST, GX_CC_TEXC, GX_CC_RASC, GX_CC_C0); @@ -318,8 +318,8 @@ void daMant_packet_c::draw() { GXInitTexObjLOD(&GStack_74, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1); GXLoadTexObj(&GStack_74, GX_TEXMAP0); - GXSetTevColor(GX_TEVREG0, (GXColor){0, 0, 0, 0}); - GXSetTevKColor(GX_KCOLOR0, (GXColor){0, 0, 0, 0}); + GXSetTevColor(GX_TEVREG0, COMPOUND_LITERAL(GXColor){0, 0, 0, 0}); + GXSetTevKColor(GX_KCOLOR0, COMPOUND_LITERAL(GXColor){0, 0, 0, 0}); GXSetCullMode(GX_CULL_FRONT); GXLoadPosMtxImm(this->mMtx2, GX_PNMTX0); diff --git a/src/d/actor/d_a_midna.cpp b/src/d/actor/d_a_midna.cpp index afaccaf13b..1134047179 100644 --- a/src/d/actor/d_a_midna.cpp +++ b/src/d/actor/d_a_midna.cpp @@ -3234,9 +3234,9 @@ int daMidna_c::execute() { if (!checkShadowModeTalkWait() || fopAcM_getTalkEventPartner(link) == this) { if (!checkStateFlg0(FLG0_UNK_8000)) { offStateFlg0((daMidna_FLG0)(FLG0_NPC_NEAR | FLG0_NPC_FAR)); - BOOL far; - if (fopAcIt_Judge((fopAcIt_JudgeFunc)daMidna_searchNpc, &far)) { - if (!far) { + BOOL far_; + if (fopAcIt_Judge((fopAcIt_JudgeFunc)daMidna_searchNpc, &far_)) { + if (!far_) { onStateFlg0(FLG0_NPC_NEAR); } else { onStateFlg0(FLG0_NPC_FAR); diff --git a/src/d/actor/d_a_mirror.cpp b/src/d/actor/d_a_mirror.cpp index 822ea0f314..5dc2f871df 100644 --- a/src/d/actor/d_a_mirror.cpp +++ b/src/d/actor/d_a_mirror.cpp @@ -270,7 +270,7 @@ void dMirror_packet_c::mainDraw() { int prjPosNum = 4; view_class* view = dComIfGd_getView(); - f32 temp_f22 = -view->near; + f32 temp_f22 = -view->near_; cXyz* var_r21 = mQuad; cXyz* var_r22 = sp19C; int var_r23 = 0; @@ -427,12 +427,12 @@ void dMirror_packet_c::mainDraw() { j3dSys.reinitGX(); GXSetScissor(scissor[0], scissor[1], scissor[2], scissor[3]); - mirrorZdraw(sp150, sp138, view->far, var_f31, var_f30, var_f29, var_f28, var_f27); + mirrorZdraw(sp150, sp138, view->far_, var_f31, var_f30, var_f29, var_f28, var_f27); } } void dMirror_packet_c::draw() { - mDoLib_clipper::changeFar(dComIfGd_getView()->far); + mDoLib_clipper::changeFar(dComIfGd_getView()->far_); if (!mDoLib_clipper::clip(j3dSys.getViewMtx(), &mMaxVal, &mMinVal)) { mainDraw(); } diff --git a/src/d/actor/d_a_npc4.cpp b/src/d/actor/d_a_npc4.cpp index cf2f71f703..934f607a17 100644 --- a/src/d/actor/d_a_npc4.cpp +++ b/src/d/actor/d_a_npc4.cpp @@ -1280,7 +1280,8 @@ int daNpcF_c::ctrlMsgAnm(int& o_expression, int& o_motion, fopAc_ac_c* param_2, return mMsgTimer; } -void daNpcF_c::orderEvent(int i_speak, char* i_evtName, u16 param_2, u16 i_priority, u8 i_mapToolID, +void daNpcF_c::orderEvent(int i_speak, char* i_evtName, u16 param_2, u16 i_priority, + u8 i_mapToolID, u16 i_flag) { if (i_evtName != NULL) { mEventIdx = dComIfGp_getEventManager().getEventIdx(this, i_evtName, 0xff); diff --git a/src/d/actor/d_a_npc_ash.cpp b/src/d/actor/d_a_npc_ash.cpp index 5f285ace08..d4cd04573a 100644 --- a/src/d/actor/d_a_npc_ash.cpp +++ b/src/d/actor/d_a_npc_ash.cpp @@ -57,7 +57,7 @@ void daNpcAsh_HIO_c::genMessage(JORMContext* ctext) { } #endif -NPC_ASH_HIO_CLASS l_HIO; +static NPC_ASH_HIO_CLASS l_HIO; void daNpcAsh_c::setLookMode(int i_lookMode, fopAc_ac_c* i_talkPartner) { if (i_lookMode != mLookMode || i_talkPartner != mTalkPartner) { diff --git a/src/d/actor/d_a_npc_ashB.cpp b/src/d/actor/d_a_npc_ashB.cpp index 237c93aa58..ec241ac46a 100644 --- a/src/d/actor/d_a_npc_ashB.cpp +++ b/src/d/actor/d_a_npc_ashB.cpp @@ -46,7 +46,7 @@ const daNpcAshB_HIOParam daNpcAshB_Param_c::m = { 400.0f, // field_0x6c }; -NPC_ASHB_HIO_CLASS l_HIO; +static NPC_ASHB_HIO_CLASS l_HIO; static daNpc_GetParam2 l_bckGetParamList[21] = { {-1, 2, 0}, {13, 0, 0}, {14, 0, 0}, {11, 0, 0}, {10, 0, 0}, {9, 0, 0}, {12, 0, 0}, diff --git a/src/d/actor/d_a_npc_bou.cpp b/src/d/actor/d_a_npc_bou.cpp index fe6f44846e..23640f7a09 100644 --- a/src/d/actor/d_a_npc_bou.cpp +++ b/src/d/actor/d_a_npc_bou.cpp @@ -16,7 +16,7 @@ static int l_bmdData[1][2] = { {11, 1}, }; -daNpcT_evtData_c l_evtList[11] = { +static daNpcT_evtData_c l_evtList[11] = { {"", 0}, {"NO_RESPONSE", 0}, {"WILDGOAT", 2}, diff --git a/src/d/actor/d_a_npc_bouS.cpp b/src/d/actor/d_a_npc_bouS.cpp index 2eb763f042..991eb7ce85 100644 --- a/src/d/actor/d_a_npc_bouS.cpp +++ b/src/d/actor/d_a_npc_bouS.cpp @@ -1360,22 +1360,22 @@ int daNpcBouS_c::EvCut_BousIntroSumo1(int i_staffId) { if (eventManager.getIsAddvance(i_staffId)) { switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): setLookMode(LOOK_PLAYER_TALK); mActorMngrs[0].entry(daPy_getPlayerActorClass()); break; - case '0x0002': - case '0x0003': - case '0x0005': - case '0x0006': - case '0x0007': - case '0x0008': - case '0x0009': + case MULTI_CHAR('0x0002'): + case MULTI_CHAR('0x0003'): + case MULTI_CHAR('0x0005'): + case MULTI_CHAR('0x0006'): + case MULTI_CHAR('0x0007'): + case MULTI_CHAR('0x0008'): + case MULTI_CHAR('0x0009'): initTalk(9, NULL); break; - case '0x0004': + case MULTI_CHAR('0x0004'): setExpressionAnm(ANM_FH_TALK_B, true); break; @@ -1396,17 +1396,17 @@ int daNpcBouS_c::EvCut_BousIntroSumo1(int i_staffId) { } switch (*cutName) { - case '0x0001': - case '0x0004': + case MULTI_CHAR('0x0001'): + case MULTI_CHAR('0x0004'): return 1; - case '0x0002': - case '0x0003': - case '0x0005': - case '0x0006': - case '0x0007': - case '0x0008': - case '0x0009': + case MULTI_CHAR('0x0002'): + case MULTI_CHAR('0x0003'): + case MULTI_CHAR('0x0005'): + case MULTI_CHAR('0x0006'): + case MULTI_CHAR('0x0007'): + case MULTI_CHAR('0x0008'): + case MULTI_CHAR('0x0009'): if (talkProc(NULL, TRUE, NULL)) { s32 choiceNo = mFlow.getChoiceNo(); OS_REPORT("二択分岐 %s\n", choiceNo == 0 ? "はい" : "いいえ"); @@ -1434,7 +1434,7 @@ int daNpcBouS_c::EvCut_BousIntroSumo2(int i_staffId) { if (eventManager.getIsAddvance(i_staffId)) { switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): initTalk(9, NULL); setLookMode(LOOK_PLAYER_TALK); mActorMngrs[0].entry(daPy_getPlayerActorClass()); @@ -1456,7 +1456,7 @@ int daNpcBouS_c::EvCut_BousIntroSumo2(int i_staffId) { } switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { if (talkProc(NULL, TRUE, NULL)) { int choiceNo = mFlow.getChoiceNo(); @@ -1489,15 +1489,15 @@ int daNpcBouS_c::EvCut_BousIntroSumo3(int i_staffId) { if (eventManager.getIsAddvance(i_staffId)) { switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): setLookMode(LOOK_PLAYER_TALK); mActorMngrs[0].entry(daPy_getPlayerActorClass()); break; - case '0x0003': + case MULTI_CHAR('0x0003'): setMotion(MOT_WALK, -1.0f, 0); // fallthrough - case '0x0002': + case MULTI_CHAR('0x0002'): setAngle(-0x2AAA); initTalk(9, NULL); break; @@ -1521,16 +1521,16 @@ int daNpcBouS_c::EvCut_BousIntroSumo3(int i_staffId) { } switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): return 1; - case '0x0002': + case MULTI_CHAR('0x0002'): if (talkProc(NULL, TRUE, NULL)) { return 1; } break; - case '0x0003': { + case MULTI_CHAR('0x0003'): { cXyz* pos = dComIfGp_evmng_getMyXyzP(i_staffId, "pos"); if (pos != NULL) { if (cLib_chaseAngleS(&shape_angle.y, cLib_targetAngleY(¤t.pos, pos), 0x100)) { diff --git a/src/d/actor/d_a_npc_clerka.cpp b/src/d/actor/d_a_npc_clerka.cpp index 21b089eb67..e3175bb4cd 100644 --- a/src/d/actor/d_a_npc_clerka.cpp +++ b/src/d/actor/d_a_npc_clerka.cpp @@ -780,7 +780,7 @@ static int daNpc_clerkA_IsDelete(void* i_this) { return 1; } -NPC_CLERKA_HIO_CLASS l_HIO; +static NPC_CLERKA_HIO_CLASS l_HIO; static actor_method_class daNpc_clerkA_MethodTable = { (process_method_func)daNpc_clerkA_Create, (process_method_func)daNpc_clerkA_Delete, diff --git a/src/d/actor/d_a_npc_clerkb.cpp b/src/d/actor/d_a_npc_clerkb.cpp index c6400f90a0..41ec390d4a 100644 --- a/src/d/actor/d_a_npc_clerkb.cpp +++ b/src/d/actor/d_a_npc_clerkb.cpp @@ -932,7 +932,7 @@ static int daNpc_clerkB_IsDelete(void* i_this) { return 1; } -NPC_CLERKB_HIO_CLASS l_HIO; +static NPC_CLERKB_HIO_CLASS l_HIO; static actor_method_class daNpc_clerkB_MethodTable = { (process_method_func)daNpc_clerkB_Create, (process_method_func)daNpc_clerkB_Delete, diff --git a/src/d/actor/d_a_npc_clerkt.cpp b/src/d/actor/d_a_npc_clerkt.cpp index 21398595be..43544cd533 100644 --- a/src/d/actor/d_a_npc_clerkt.cpp +++ b/src/d/actor/d_a_npc_clerkt.cpp @@ -693,7 +693,7 @@ void daNpcClerkT_c::setCollision() { mCyl.ClrTgHit(); } -NPC_CLERKT_HIO_CLASS l_HIO; +static NPC_CLERKT_HIO_CLASS l_HIO; static actor_method_class daNpcClerkt_MethodTable = { (process_method_func)daNpcClerkt_Create, (process_method_func)daNpcClerkt_Delete, diff --git a/src/d/actor/d_a_npc_gnd.cpp b/src/d/actor/d_a_npc_gnd.cpp index 8856e476d0..bc34c405af 100644 --- a/src/d/actor/d_a_npc_gnd.cpp +++ b/src/d/actor/d_a_npc_gnd.cpp @@ -96,7 +96,7 @@ const daNpc_Gnd_HIOParam daNpc_Gnd_Param_c::m = { 0.0f, }; -NPC_GND_HIO_CLASS l_HIO; +static NPC_GND_HIO_CLASS l_HIO; daNpc_Gnd_c::~daNpc_Gnd_c() { OS_REPORT("|%06d:%x|daNpc_Gnd_c -> デストラクト\n", g_Counter.mCounter0, this); diff --git a/src/d/actor/d_a_npc_gra.cpp b/src/d/actor/d_a_npc_gra.cpp index d6978ec3cb..65c2e6baa2 100644 --- a/src/d/actor/d_a_npc_gra.cpp +++ b/src/d/actor/d_a_npc_gra.cpp @@ -129,7 +129,7 @@ daNpc_grA_HIO_c::daNpc_grA_HIO_c() { } #endif -NPC_GRA_HIO_CLASS l_HIO; +static NPC_GRA_HIO_CLASS l_HIO; static char* l_evtNames[11] = { NULL, diff --git a/src/d/actor/d_a_npc_gro.cpp b/src/d/actor/d_a_npc_gro.cpp index 564d0b1d8b..4c98adfe70 100644 --- a/src/d/actor/d_a_npc_gro.cpp +++ b/src/d/actor/d_a_npc_gro.cpp @@ -192,7 +192,7 @@ enum Mode { static NPC_GRO_HIO_CLASS l_HIO; -daNpc_Maro_c::actionFunc dummy_lit_3931() { +static daNpc_Maro_c::actionFunc dummy_lit_3931() { return &daNpc_Maro_c::choccai; } diff --git a/src/d/actor/d_a_npc_impal.cpp b/src/d/actor/d_a_npc_impal.cpp index 00e9a02905..7241c9c87f 100644 --- a/src/d/actor/d_a_npc_impal.cpp +++ b/src/d/actor/d_a_npc_impal.cpp @@ -45,7 +45,7 @@ daNpcImpal_HIOParam const daNpcImpal_Param_c::m = { 300.0f, // demo_start_dist }; -NPC_IMPAL_HIO_CLASS l_HIO; +static NPC_IMPAL_HIO_CLASS l_HIO; static daNpc_GetParam2 l_bckGetParamList[18] = { {-1, 2, 0}, {14, 0, 0}, {8, 0, 0}, {7, 2, 0}, {11, 0, 0}, {13, 0, 0}, diff --git a/src/d/actor/d_a_npc_jagar.cpp b/src/d/actor/d_a_npc_jagar.cpp index b27eb6f554..30830d06c5 100644 --- a/src/d/actor/d_a_npc_jagar.cpp +++ b/src/d/actor/d_a_npc_jagar.cpp @@ -347,7 +347,7 @@ int daNpc_Jagar_c::create() { static int const heapSize[4] = {14416, 14448, 14448, 0}; daNpcT_ct(this, daNpc_Jagar_c, l_faceMotionAnmData, (const daNpcT_motionAnmData_c *)l_motionAnmData, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c *) l_faceMotionSequenceData, 4, - (const daNpcT_MotionSeqMngr_c::sequenceStepData_c *)l_motionSequenceData, 4, (const daNpcT_evtData_c *)l_evtList, (char **)l_resNameList + (const daNpcT_MotionSeqMngr_c::sequenceStepData_c *)l_motionSequenceData, 4, (const daNpcT_evtData_c *)l_evtList, l_resNameList ); mType = getType(); diff --git a/src/d/actor/d_a_npc_kasi_mich.cpp b/src/d/actor/d_a_npc_kasi_mich.cpp index e76b9b9823..4b3d7ca068 100644 --- a/src/d/actor/d_a_npc_kasi_mich.cpp +++ b/src/d/actor/d_a_npc_kasi_mich.cpp @@ -941,7 +941,7 @@ int daNpcKasiMich_c::getWolfPathNearIdx() { return rv; } -void dummy() { +static void dummy() { daNpcKasiMich_c::actionFunc temp; temp = &daNpcKasiMich_c::wait; temp = &daNpcKasiMich_c::wait; diff --git a/src/d/actor/d_a_npc_kn_teach01.inc b/src/d/actor/d_a_npc_kn_teach01.inc index ae4a5a3ca2..77d941a372 100644 --- a/src/d/actor/d_a_npc_kn_teach01.inc +++ b/src/d/actor/d_a_npc_kn_teach01.inc @@ -333,7 +333,7 @@ int daNpc_Kn_c::ctrlWarp() { void(0); break; } - case 1: + case 1: { sp28 = 1; field_0x170d++; @@ -367,7 +367,7 @@ int daNpc_Kn_c::ctrlWarp() { field_0x170d = 0; } void(0); - break; + } break; case 2: sp28 = 1; field_0x170d++; diff --git a/src/d/actor/d_a_npc_knj.cpp b/src/d/actor/d_a_npc_knj.cpp index 7a6993223f..51d8b5020b 100644 --- a/src/d/actor/d_a_npc_knj.cpp +++ b/src/d/actor/d_a_npc_knj.cpp @@ -130,7 +130,7 @@ daNpc_Knj_c::cutFunc daNpc_Knj_c::mCutList[1] = { NULL, }; -NPC_KNJ_HIO_CLASS l_HIO; +static NPC_KNJ_HIO_CLASS l_HIO; daNpc_Knj_c::~daNpc_Knj_c() { if (heap != NULL) { diff --git a/src/d/actor/d_a_npc_kyury.cpp b/src/d/actor/d_a_npc_kyury.cpp index fc17e0fa54..84c497373e 100644 --- a/src/d/actor/d_a_npc_kyury.cpp +++ b/src/d/actor/d_a_npc_kyury.cpp @@ -136,7 +136,7 @@ daNpc_Kyury_c::cutFunc daNpc_Kyury_c::mCutList[2] = { &daNpc_Kyury_c::cutConversation, }; -NPC_KYURY_HIO_CLASS l_HIO; +static NPC_KYURY_HIO_CLASS l_HIO; #if DEBUG daNpc_Kyury_HIO_c::daNpc_Kyury_HIO_c() { diff --git a/src/d/actor/d_a_npc_len.cpp b/src/d/actor/d_a_npc_len.cpp index 6d3586be20..2ff8e76fda 100644 --- a/src/d/actor/d_a_npc_len.cpp +++ b/src/d/actor/d_a_npc_len.cpp @@ -174,7 +174,7 @@ int daNpc_Len_c::create() { (const daNpcT_motionAnmData_c*)l_motionAnmData, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_faceMotionSequenceData, 4, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_motionSequenceData, - 4, (const daNpcT_evtData_c*)l_evtList, (char**)l_resNameList); + 4, (const daNpcT_evtData_c*)l_evtList, l_resNameList); mType = getType(); mFlowNodeNo = getFlowNodeNo(); @@ -652,7 +652,7 @@ void daNpc_Len_c::beforeMove() { } } -NPC_LEN_HIO_CLASS l_HIO; +static NPC_LEN_HIO_CLASS l_HIO; void daNpc_Len_c::setAttnPos() { cXyz acStack_40(-30.0f, 15.0f, 0.0f); diff --git a/src/d/actor/d_a_npc_lud.cpp b/src/d/actor/d_a_npc_lud.cpp index b15297f89d..4958e6436f 100644 --- a/src/d/actor/d_a_npc_lud.cpp +++ b/src/d/actor/d_a_npc_lud.cpp @@ -254,7 +254,7 @@ int daNpc_Lud_c::create() { (const daNpcT_motionAnmData_c*)l_motionAnmData, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_faceMotionSequenceData, 4, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_motionSequenceData, - 4, (const daNpcT_evtData_c*)l_evtList, (char**)l_resNameList); + 4, (const daNpcT_evtData_c*)l_evtList, l_resNameList); mType = getType(); mFlowNodeNo = getFlowNodeNo(); @@ -693,7 +693,7 @@ void daNpc_Lud_c::beforeMove() { } } -NPC_LUD_HIO_CLASS l_HIO; +static NPC_LUD_HIO_CLASS l_HIO; void daNpc_Lud_c::setAttnPos() { cXyz cStack_70(5.0f, 30.0f, 0.0f); diff --git a/src/d/actor/d_a_npc_maro.cpp b/src/d/actor/d_a_npc_maro.cpp index 709e27cb5c..492d83527e 100644 --- a/src/d/actor/d_a_npc_maro.cpp +++ b/src/d/actor/d_a_npc_maro.cpp @@ -116,7 +116,7 @@ static int l_bmdData[2][2] = { {11, 1}, {5, 2}, }; -daNpcT_evtData_c l_evtList[15] = { +static daNpcT_evtData_c l_evtList[15] = { {"", 0}, {"DEFAULT_GETITEM", 0}, {"NO_RESPONSE", 0}, diff --git a/src/d/actor/d_a_npc_moi.cpp b/src/d/actor/d_a_npc_moi.cpp index 50462a6f25..e3e5aee06b 100644 --- a/src/d/actor/d_a_npc_moi.cpp +++ b/src/d/actor/d_a_npc_moi.cpp @@ -244,7 +244,7 @@ enum Motion { /* 0x2F */ MOT_UNK_47 = 47, }; -NPC_MOI_HIO_CLASS l_HIO; +static NPC_MOI_HIO_CLASS l_HIO; daNpc_Moi_c::~daNpc_Moi_c() { if (mpMorf[0] != 0) { @@ -267,7 +267,7 @@ int daNpc_Moi_c::create() { (const daNpcT_motionAnmData_c*)l_motionAnmData, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_faceMotionSequenceData, 4, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_motionSequenceData, - 4, (const daNpcT_evtData_c*)l_evtList, (char**)l_resNameList); + 4, (const daNpcT_evtData_c*)l_evtList, l_resNameList); mType = getType(); mFlowNodeNo = getFlowNodeNo(); diff --git a/src/d/actor/d_a_npc_pouya.cpp b/src/d/actor/d_a_npc_pouya.cpp index 2129c5c52f..5d36a5992a 100644 --- a/src/d/actor/d_a_npc_pouya.cpp +++ b/src/d/actor/d_a_npc_pouya.cpp @@ -1189,7 +1189,7 @@ static bool daNpc_Pouya_IsDelete(void* i_this) { return 1; } -NPC_POUYA_HIO_CLASS l_HIO; +static NPC_POUYA_HIO_CLASS l_HIO; static actor_method_class daNpc_Pouya_MethodTable = { (process_method_func)daNpc_Pouya_Create, (process_method_func)daNpc_Pouya_Delete, diff --git a/src/d/actor/d_a_npc_saru.cpp b/src/d/actor/d_a_npc_saru.cpp index 32440db991..8a1a370478 100644 --- a/src/d/actor/d_a_npc_saru.cpp +++ b/src/d/actor/d_a_npc_saru.cpp @@ -308,7 +308,7 @@ int daNpc_Saru_c::create() { }; daNpcT_ct(this, daNpc_Saru_c, l_faceMotionAnmData, l_motionAnmData, - l_faceMotionSequenceData, 4, l_motionSequenceData, 4, l_evtList, (char**)l_resNameList); + l_faceMotionSequenceData, 4, l_motionSequenceData, 4, l_evtList, l_resNameList); mType = getType(); mFlowNodeNo = getFlowNodeNo(); diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index bffc93e883..ec87bf930f 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -307,7 +307,7 @@ static char* l_evtArcs[14] = { static char* l_myName = "Shad"; -NPC_SHAD_HIO_CLASS l_HIO; +static NPC_SHAD_HIO_CLASS l_HIO; daNpcShad_c::EventFn daNpcShad_c::mEvtSeqList[14] = { NULL, diff --git a/src/d/actor/d_a_npc_shoe.cpp b/src/d/actor/d_a_npc_shoe.cpp index 1639f2ee86..06b63797a7 100644 --- a/src/d/actor/d_a_npc_shoe.cpp +++ b/src/d/actor/d_a_npc_shoe.cpp @@ -54,7 +54,7 @@ void daNpcShoe_HIO_c::genMessage(JORMContext* ctext) { } #endif -NPC_SHOE_HIO_CLASS l_HIO; +static NPC_SHOE_HIO_CLASS l_HIO; void daNpcShoe_c::setLookMode(int i_lookMode) { if (mLookMode != i_lookMode) { diff --git a/src/d/actor/d_a_npc_taro.cpp b/src/d/actor/d_a_npc_taro.cpp index 32956de232..4bcfb6a0d8 100644 --- a/src/d/actor/d_a_npc_taro.cpp +++ b/src/d/actor/d_a_npc_taro.cpp @@ -20,7 +20,7 @@ #include "f_op/f_op_camera_mng.h" #include -daNpc_Maro_c::actionFunc dummy_lit_3931() { +static daNpc_Maro_c::actionFunc dummy_lit_3931() { return &daNpc_Maro_c::choccai; } diff --git a/src/d/actor/d_a_npc_the.cpp b/src/d/actor/d_a_npc_the.cpp index 79c169935d..7d63b43c42 100644 --- a/src/d/actor/d_a_npc_the.cpp +++ b/src/d/actor/d_a_npc_the.cpp @@ -61,7 +61,7 @@ void daNpcThe_HIO_c::genMessage(JORMContext* ctext) { } #endif -NPC_THE_HIO_CLASS l_HIO; +static NPC_THE_HIO_CLASS l_HIO; static daNpc_GetParam1 l_bmdGetParamList[2] = { {23, 0}, // the diff --git a/src/d/actor/d_a_npc_theB.cpp b/src/d/actor/d_a_npc_theB.cpp index 67a19b8468..3a01c9bd7c 100644 --- a/src/d/actor/d_a_npc_theB.cpp +++ b/src/d/actor/d_a_npc_theB.cpp @@ -1176,10 +1176,10 @@ int daNpcTheB_c::EvCut_PersonalCombatIntro(int i_staffId) { if (eventManager.getIsAddvance(i_staffId)) { switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): break; - case '0x0002': + case MULTI_CHAR('0x0002'): initTalk(0x16, NULL); setLookMode(LOOK_PLAYER); mActorMngrs[0].entry(daPy_getPlayerActorClass()); @@ -1204,10 +1204,10 @@ int daNpcTheB_c::EvCut_PersonalCombatIntro(int i_staffId) { } switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): return 1; - case '0x0002': + case MULTI_CHAR('0x0002'): if (talkProc(NULL, TRUE, NULL)) { dComIfGs_onSaveDunSwitch(52); dComIfGs_onSaveDunSwitch(53); @@ -1229,7 +1229,7 @@ int daNpcTheB_c::EvCut_PersonalCombatRevenge(int i_staffId) { if (eventManager.getIsAddvance(i_staffId)) { switch (*cutName) { - case '0x0001': { + case MULTI_CHAR('0x0001'): { fopAc_ac_c* actor_p = getEvtAreaTagP(5, 0); cXyz* pos = dComIfGp_evmng_getMyXyzP(i_staffId, "pos"); int* angle = dComIfGp_evmng_getMyIntegerP(i_staffId, "angle"); @@ -1248,13 +1248,13 @@ int daNpcTheB_c::EvCut_PersonalCombatRevenge(int i_staffId) { break; } - case '0x0002': + case MULTI_CHAR('0x0002'): initTalk(0x17, NULL); setLookMode(LOOK_PLAYER); mActorMngrs[0].entry(daPy_getPlayerActorClass()); break; - case '0x0003': + case MULTI_CHAR('0x0003'): break; default: @@ -1282,19 +1282,19 @@ int daNpcTheB_c::EvCut_PersonalCombatRevenge(int i_staffId) { } switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): if (getCoachSpeed() == 0.0f) { return 1; } break; - case '0x0002': + case MULTI_CHAR('0x0002'): if (talkProc(NULL, TRUE, NULL)) { return 1; } break; - case '0x0003': + case MULTI_CHAR('0x0003'): return 1; default: @@ -1411,7 +1411,7 @@ int daNpcTheB_c::EvCut_AnnulationFieldRace(int i_staffId) { if (eventManager.getIsAddvance(i_staffId)) { switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): if (startAndGoal_p != NULL) { startAndGoal_p->readyStartTimer(); } @@ -1424,7 +1424,7 @@ int daNpcTheB_c::EvCut_AnnulationFieldRace(int i_staffId) { } switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): if (startAndGoal_p != NULL && startAndGoal_p->isStartCheck()) { return 1; } @@ -1444,15 +1444,15 @@ int daNpcTheB_c::EvCut_TheBHint(int i_staffId) { if (eventManager.getIsAddvance(i_staffId)) { switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): setMotionAnm(ANM_SIT, 0.0f); break; - case '0x0002': + case MULTI_CHAR('0x0002'): initTalk(mHintMsgNo, NULL); break; - case '0x0003': { + case MULTI_CHAR('0x0003'): { cXyz pos; csXyz angle; daNpcF_getPlayerInfoFromPlayerList(field_0xe04, mRoomNo, pos, angle); @@ -1479,11 +1479,11 @@ int daNpcTheB_c::EvCut_TheBHint(int i_staffId) { } switch (*cutName) { - case '0x0001': - case '0x0003': + case MULTI_CHAR('0x0001'): + case MULTI_CHAR('0x0003'): return 1; - case '0x0002': + case MULTI_CHAR('0x0002'): if (talkProc(NULL, TRUE, NULL)) { mHintEvtFlag = 0; return 1; @@ -1504,22 +1504,22 @@ int daNpcTheB_c::EvCut_CoachGuardGameOver(int i_staffId) { if (eventManager.getIsAddvance(i_staffId)) { switch (*cutName) { - case '0x0001': + case MULTI_CHAR('0x0001'): Z2GetAudioMgr()->bgmStart(Z2BGM_GAME_OVER, 0, 0); break; - case '0x0002': { + case MULTI_CHAR('0x0002'): { daNpcCoach_c* coach_p = (daNpcCoach_c*)fopAcM_SearchByID(parentActorID); cXyz pos(0.0f, -30000.0f, 0.0f); coach_p->setPosAngle(pos, shape_angle); break; } - case '0x0003': + case MULTI_CHAR('0x0003'): ((daCoach2D_c*)fpcM_SearchByName(PROC_COACH2D))->hide(); break; - case '0x0004': + case MULTI_CHAR('0x0004'): break; default: @@ -1529,12 +1529,12 @@ int daNpcTheB_c::EvCut_CoachGuardGameOver(int i_staffId) { } switch (*cutName) { - case '0x0001': - case '0x0002': - case '0x0003': + case MULTI_CHAR('0x0001'): + case MULTI_CHAR('0x0002'): + case MULTI_CHAR('0x0003'): return 1; - case '0x0004': + case MULTI_CHAR('0x0004'): daPy_getPlayerActorClass()->onForceGameOver(); return 1; diff --git a/src/d/actor/d_a_npc_toby.cpp b/src/d/actor/d_a_npc_toby.cpp index 232d107471..1d934e3ada 100644 --- a/src/d/actor/d_a_npc_toby.cpp +++ b/src/d/actor/d_a_npc_toby.cpp @@ -265,7 +265,7 @@ daNpc_Toby_c::cutFunc daNpc_Toby_c::mCutList[7] = { &daNpc_Toby_c::cutConversationAboutZra, }; -NPC_TOBY_HIO_CLASS l_HIO; +static NPC_TOBY_HIO_CLASS l_HIO; daNpc_Toby_c::~daNpc_Toby_c() { OS_REPORT("|%06d:%x|daNpc_Toby_c -> デストラクト\n", g_Counter.mCounter0, this); diff --git a/src/d/actor/d_a_npc_uri.cpp b/src/d/actor/d_a_npc_uri.cpp index c3d835e6a3..c1c706d311 100644 --- a/src/d/actor/d_a_npc_uri.cpp +++ b/src/d/actor/d_a_npc_uri.cpp @@ -209,7 +209,7 @@ daNpc_Uri_c::cutFunc daNpc_Uri_c::mCutList[7] = { &daNpc_Uri_c::cutMeetingAgain, }; -NPC_URI_HIO_CLASS l_HIO; +static NPC_URI_HIO_CLASS l_HIO; daNpc_Uri_c::~daNpc_Uri_c() { if (mpMorf[0] != 0) { @@ -232,7 +232,7 @@ int daNpc_Uri_c::create() { (const daNpcT_motionAnmData_c*)l_motionAnmData, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_faceMotionSequenceData, 4, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_motionSequenceData, - 4, (const daNpcT_evtData_c*)l_evtList, (char**)l_resNameList); + 4, (const daNpcT_evtData_c*)l_evtList, l_resNameList); mType = getType(); mFlowNodeNo = getFlowNodeNo(); diff --git a/src/d/actor/d_a_obj_ari.cpp b/src/d/actor/d_a_obj_ari.cpp index f97e72aa49..beb5e8524a 100644 --- a/src/d/actor/d_a_obj_ari.cpp +++ b/src/d/actor/d_a_obj_ari.cpp @@ -510,14 +510,14 @@ void daObjARI_c::Z_BufferChk() { dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ); } - f32 near = dComIfGd_getView()->near; - f32 far = dComIfGd_getView()->far; + f32 near_ = dComIfGd_getView()->near_; + f32 far_ = dComIfGd_getView()->far_; mDoLib_pos2camera(&vec1, &vec2); vec2.z += 50.0f; if (vec2.z > 0.0f) { vec2.z = 0.0f; } - mScreenZ = ((near + far * near / vec2.z) / (far - near) + 1.0f) * 0xffffff; + mScreenZ = ((near_ + far_ * near_ / vec2.z) / (far_ - near_) + 1.0f) * 0xffffff; } int daObjARI_c::Delete() { diff --git a/src/d/actor/d_a_obj_brakeeff.cpp b/src/d/actor/d_a_obj_brakeeff.cpp index d9299694f9..6a43938f72 100644 --- a/src/d/actor/d_a_obj_brakeeff.cpp +++ b/src/d/actor/d_a_obj_brakeeff.cpp @@ -141,7 +141,7 @@ u32 bef_brk[2] = { 10, }; -int useHeapInit(fopAc_ac_c* i_this) { +static int useHeapInit(fopAc_ac_c* i_this) { obj_brakeeff_class* a_this = static_cast(i_this); J3DModelData* modelData = diff --git a/src/d/actor/d_a_obj_burnbox.cpp b/src/d/actor/d_a_obj_burnbox.cpp index b7b47b5357..b1c3f2a9c7 100644 --- a/src/d/actor/d_a_obj_burnbox.cpp +++ b/src/d/actor/d_a_obj_burnbox.cpp @@ -81,7 +81,7 @@ int daObjBurnBox_c::Create() { return 1; } -const char* l_arcName[3] = { +static const char* l_arcName[3] = { "Kkiba_00", // crate "Kkiba_00", "J_taru00", // barrel diff --git a/src/d/actor/d_a_obj_carry.cpp b/src/d/actor/d_a_obj_carry.cpp index c41fdc88e7..201c81c361 100644 --- a/src/d/actor/d_a_obj_carry.cpp +++ b/src/d/actor/d_a_obj_carry.cpp @@ -1682,7 +1682,7 @@ int daObjCarry_c::execute() { cLib_chaseF(&field_0xe20, 2.0f, 0.05f + KREG_F(1)); } - GXColor color = (GXColor){0x5F, 0x5F, 0x5F, 0xFF}; + GXColor color = COMPOUND_LITERAL(GXColor){0x5F, 0x5F, 0x5F, 0xFF}; int var_r27 = dKy_BossLight_set(¤t.pos, &color, field_0xe20 + KREG_F(0), 0); if (!var_r27) { OS_REPORT_ERROR("光球:ライト登録できませんでした\n"); diff --git a/src/d/actor/d_a_obj_cho.cpp b/src/d/actor/d_a_obj_cho.cpp index 33088afbdd..a6f8fc56bb 100644 --- a/src/d/actor/d_a_obj_cho.cpp +++ b/src/d/actor/d_a_obj_cho.cpp @@ -300,14 +300,14 @@ void daObjCHO_c::Z_BufferChk() { dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ); } - f32 near = dComIfGd_getView()->near; - f32 far = dComIfGd_getView()->far; + f32 near_ = dComIfGd_getView()->near_; + f32 far_ = dComIfGd_getView()->far_; mDoLib_pos2camera(&vec1, &vec2); vec2.z += 50.0f; if (vec2.z > 0.0f) { vec2.z = 0.0f; } - mScreenZ = ((near + far * near / vec2.z) / (far - near) + 1.0f) * 0xffffff; + mScreenZ = ((near_ + far_ * near_ / vec2.z) / (far_ - near_) + 1.0f) * 0xffffff; } void daObjCHO_c::ParticleSet() { diff --git a/src/d/actor/d_a_obj_dan.cpp b/src/d/actor/d_a_obj_dan.cpp index 3c5f1cc226..84446f5cb3 100644 --- a/src/d/actor/d_a_obj_dan.cpp +++ b/src/d/actor/d_a_obj_dan.cpp @@ -278,14 +278,14 @@ void daObjDAN_c::Z_BufferChk() { dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ); } - f32 near = dComIfGd_getView()->near; - f32 far = dComIfGd_getView()->far; + f32 near_ = dComIfGd_getView()->near_; + f32 far_ = dComIfGd_getView()->far_; mDoLib_pos2camera(&vec1, &vec2); vec2.z += 50.0f; if (vec2.z > 0.0f) { vec2.z = 0.0f; } - mScreenZ = ((near + far * near / vec2.z) / (far - near) + 1.0f) * 0xffffff; + mScreenZ = ((near_ + far_ * near_ / vec2.z) / (far_ - near_) + 1.0f) * 0xffffff; } void daObjDAN_c::ParticleSet() { diff --git a/src/d/actor/d_a_obj_drop.cpp b/src/d/actor/d_a_obj_drop.cpp index eff54e3af1..cdd3930a5a 100644 --- a/src/d/actor/d_a_obj_drop.cpp +++ b/src/d/actor/d_a_obj_drop.cpp @@ -324,7 +324,7 @@ int daObjDrop_c::modeWait() { mModeAction = 3; } break; - case 3: + case 3: { removeBodyEffect(); static const s16 target_rel_angle[] = {-0x4000, 0x0000, 0x4000}; @@ -338,8 +338,8 @@ int daObjDrop_c::modeWait() { mModeAction = 4; mDrawInTimer = 60; mSound.startSound(Z2SE_OBJ_LIGHTDROP_DRAW_IN, 0, -1); - break; - case 4: + } break; + case 4: { mDrawInTimer--; for (int i = 0; i < 3; i++) { speedF = 60.0f; @@ -396,7 +396,7 @@ int daObjDrop_c::modeWait() { checkCompleteDemo(); mModeAction = 5; } - break; + } break; case 5: if (cLib_calcTimer(&mDeleteTimer) == 0) { mModeAction = 6; diff --git a/src/d/actor/d_a_obj_flag2.cpp b/src/d/actor/d_a_obj_flag2.cpp index f63ab38d34..3f805d7c00 100644 --- a/src/d/actor/d_a_obj_flag2.cpp +++ b/src/d/actor/d_a_obj_flag2.cpp @@ -288,8 +288,8 @@ void FlagCloth_c::draw() { GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0); dKy_Global_amb_set(&mTevStr); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevColor(GX_TEVREG0, (GXColor){0, 0, 0, 0xff}); - GXSetTevKColor(GX_KCOLOR0, (GXColor){0, 0, 0, 0xff}); + GXSetTevColor(GX_TEVREG0, COMPOUND_LITERAL(GXColor){0, 0, 0, 0xff}); + GXSetTevKColor(GX_KCOLOR0, COMPOUND_LITERAL(GXColor){0, 0, 0, 0xff}); GXSetTevKColorSel(GX_TEVSTAGE0, GX_TEV_KCSEL_K0); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_KONST, GX_CC_TEXC, GX_CC_RASC, GX_CC_C0); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_4, GX_TRUE, GX_TEVPREV); diff --git a/src/d/actor/d_a_obj_flag3.cpp b/src/d/actor/d_a_obj_flag3.cpp index 41d3a555e1..0978924c28 100644 --- a/src/d/actor/d_a_obj_flag3.cpp +++ b/src/d/actor/d_a_obj_flag3.cpp @@ -247,8 +247,8 @@ inline void FlagCloth2_c::draw() { GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0); dKy_Global_amb_set(&mTevStr); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevColor(GX_TEVREG0, (GXColor){0, 0, 0, 0xff}); - GXSetTevKColor(GX_KCOLOR0, (GXColor){0, 0, 0, 0xff}); + GXSetTevColor(GX_TEVREG0, COMPOUND_LITERAL(GXColor){0, 0, 0, 0xff}); + GXSetTevKColor(GX_KCOLOR0, COMPOUND_LITERAL(GXColor){0, 0, 0, 0xff}); GXSetTevKColorSel(GX_TEVSTAGE0, GX_TEV_KCSEL_K0); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_KONST, GX_CC_TEXC, GX_CC_RASC, GX_CC_C0); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_4, GX_TRUE, GX_TEVPREV); diff --git a/src/d/actor/d_a_obj_ice_l.cpp b/src/d/actor/d_a_obj_ice_l.cpp index 34d489308c..7048eb3a18 100644 --- a/src/d/actor/d_a_obj_ice_l.cpp +++ b/src/d/actor/d_a_obj_ice_l.cpp @@ -14,7 +14,7 @@ #include "d/d_s_play.h" #include -f32 dummyLiteral() { +static f32 dummyLiteral() { return 0.0f; } diff --git a/src/d/actor/d_a_obj_kabuto.cpp b/src/d/actor/d_a_obj_kabuto.cpp index 4e5413fa63..7a298a1aad 100644 --- a/src/d/actor/d_a_obj_kabuto.cpp +++ b/src/d/actor/d_a_obj_kabuto.cpp @@ -444,14 +444,14 @@ void daObjKABUTO_c::Z_BufferChk() { dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ); } - f32 near = dComIfGd_getView()->near; - f32 far = dComIfGd_getView()->far; + f32 near_ = dComIfGd_getView()->near_; + f32 far_ = dComIfGd_getView()->far_; mDoLib_pos2camera(&vec1, &vec2); vec2.z += 50.0f; if (vec2.z > 0.0f) { vec2.z = 0.0f; } - mScreenZ = ((near + far * near / vec2.z) / (far - near) + 1.0f) * 0xffffff; + mScreenZ = ((near_ + far_ * near_ / vec2.z) / (far_ - near_) + 1.0f) * 0xffffff; } void daObjKABUTO_c::Action() { diff --git a/src/d/actor/d_a_obj_kamakiri.cpp b/src/d/actor/d_a_obj_kamakiri.cpp index 91139f6587..41cf54d343 100644 --- a/src/d/actor/d_a_obj_kamakiri.cpp +++ b/src/d/actor/d_a_obj_kamakiri.cpp @@ -536,14 +536,14 @@ void daObjKAM_c::Z_BufferChk() { { dComIfGd_peekZ(currentProj.x, currentProj.y, &field_0x9bc); } - f32 near = dComIfGd_getView()->near; - f32 far = dComIfGd_getView()->far; + f32 near_ = dComIfGd_getView()->near_; + f32 far_ = dComIfGd_getView()->far_; mDoLib_pos2camera(¤tOffset, ¤tProj); currentProj.z += 50.0f; if (currentProj.z > 0.0f) { currentProj.z = 0.0f; } - field_0x9b8 = ((near + (far * near) / currentProj.z) / (far - near) + 1.0f) * 16777215.0f; + field_0x9b8 = ((near_ + (far_ * near_) / currentProj.z) / (far_ - near_) + 1.0f) * 16777215.0f; } void daObjKAM_c::ParticleSet() { diff --git a/src/d/actor/d_a_obj_katatsumuri.cpp b/src/d/actor/d_a_obj_katatsumuri.cpp index 115d0dfadd..17316f9618 100644 --- a/src/d/actor/d_a_obj_katatsumuri.cpp +++ b/src/d/actor/d_a_obj_katatsumuri.cpp @@ -149,19 +149,19 @@ static int daObjKAT_Delete(daObjKAT_c* i_this) { return 1; } -f32 dummy0() { +static f32 dummy0() { return 0.0f; } -f32 dummy1() { +static f32 dummy1() { return 0.4f; } -f32 dummy2() { +static f32 dummy2() { return 10.0f; } -f32 dummy3() { +static f32 dummy3() { return 0.02f; } @@ -610,8 +610,8 @@ void daObjKAT_c::Z_BufferChk() { dComIfGd_peekZ(projected.x,projected.y, &field_0x804); } - f32 near = dComIfGd_getView()->near; - f32 far = dComIfGd_getView()->far; + f32 near_ = dComIfGd_getView()->near_; + f32 far_ = dComIfGd_getView()->far_; mDoLib_pos2camera(&curWithOff, &projected); projected.z += 50.0f; @@ -619,7 +619,7 @@ void daObjKAT_c::Z_BufferChk() { projected.z = 0.0f; } - field_0x800 = ((near + far * near / projected.z) / (far - near) + 1.0f) * 16777215.0f; + field_0x800 = ((near_ + far_ * near_ / projected.z) / (far_ - near_) + 1.0f) * 16777215.0f; } int daObjKAT_c::Delete() { diff --git a/src/d/actor/d_a_obj_kbacket.cpp b/src/d/actor/d_a_obj_kbacket.cpp index 601aa2c73e..be92443c79 100644 --- a/src/d/actor/d_a_obj_kbacket.cpp +++ b/src/d/actor/d_a_obj_kbacket.cpp @@ -14,7 +14,7 @@ static s32 l_bmdData[4] = { 8, 0, 9, 0 }; -static char* l_resNameList[1] = { "Kakashi" }; +static char* l_resNameList[1] = {"Kakashi"}; const daObj_KBacket_HIOParam daObj_KBacket_Param_c::m = { 0.0f, -5.0f, 1.0f, 400.0f, 73.0f, 30.0f, 30.0f, 30.0f, 37.0f, 45.0f, 0.0f diff --git a/src/d/actor/d_a_obj_klift00.cpp b/src/d/actor/d_a_obj_klift00.cpp index 739c7fe7f8..221e4f8812 100644 --- a/src/d/actor/d_a_obj_klift00.cpp +++ b/src/d/actor/d_a_obj_klift00.cpp @@ -109,7 +109,7 @@ static const int l_dzbidx[] = {9}; #endif // force dCcD_Sph::~dCcD_Sph to be emitted earlier than it otherwise would -void dummy() { +static void dummy() { delete (dCcD_Sph*)NULL; delete (dCcD_Cyl*)NULL; } diff --git a/src/d/actor/d_a_obj_kuwagata.cpp b/src/d/actor/d_a_obj_kuwagata.cpp index fd99731c64..7d3f399ea6 100644 --- a/src/d/actor/d_a_obj_kuwagata.cpp +++ b/src/d/actor/d_a_obj_kuwagata.cpp @@ -543,8 +543,8 @@ void daObjKUW_c::Z_BufferChk() { } view_class* view = dComIfGd_getView(); - f32 nearPlane = view->near; - f32 farPlane = view->far; + f32 nearPlane = view->near_; + f32 farPlane = view->far_; mDoLib_pos2camera(&cStack_68, &local_5c); local_5c.z += 50.0f; diff --git a/src/d/actor/d_a_obj_maki.cpp b/src/d/actor/d_a_obj_maki.cpp index c555335745..8c36b8bd2c 100644 --- a/src/d/actor/d_a_obj_maki.cpp +++ b/src/d/actor/d_a_obj_maki.cpp @@ -146,7 +146,7 @@ int daObj_Maki_Delete(obj_maki_class* i_this) { return 1; } -int useHeapInit(fopAc_ac_c* i_this) { +static int useHeapInit(fopAc_ac_c* i_this) { obj_maki_class* a_this = (obj_maki_class*)i_this; J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_maki", 4); @@ -176,7 +176,7 @@ int useHeapInit(fopAc_ac_c* i_this) { return 1; } -daObj_Maki_HIO_c l_HIO; +static daObj_Maki_HIO_c l_HIO; cPhs_Step daObj_Maki_Create(fopAc_ac_c* i_this) { fopAcM_ct(i_this, obj_maki_class); diff --git a/src/d/actor/d_a_obj_mirror_chain.cpp b/src/d/actor/d_a_obj_mirror_chain.cpp index 83285c0c80..47cec7b99f 100644 --- a/src/d/actor/d_a_obj_mirror_chain.cpp +++ b/src/d/actor/d_a_obj_mirror_chain.cpp @@ -38,7 +38,7 @@ void dScissorBegin_packet_c::draw() { cXyz spEC[5]; int sp60 = 4; view_class* view_p = dComIfGd_getView(); - f32 sp58 = -view_p->near; + f32 sp58 = -view_p->near_; cXyz* sp54 = mQuad; cXyz* var_r30 = spEC; diff --git a/src/d/actor/d_a_obj_sakuita.cpp b/src/d/actor/d_a_obj_sakuita.cpp index 0f828d4d73..87073326d1 100644 --- a/src/d/actor/d_a_obj_sakuita.cpp +++ b/src/d/actor/d_a_obj_sakuita.cpp @@ -89,7 +89,7 @@ void daObjSakuita_c::setBaseMtx() { cMtx_copy(mDoMtx_stack_c::get(), mMtx); } -f32 dummyLiteral() { return 0.5f; } +static f32 dummyLiteral() { return 0.5f; } void daObjSakuita_c::setPlatePos() { cXyz cStack_24; diff --git a/src/d/actor/d_a_obj_ss_base.cpp b/src/d/actor/d_a_obj_ss_base.cpp index e4712d3813..3279a88b3e 100644 --- a/src/d/actor/d_a_obj_ss_base.cpp +++ b/src/d/actor/d_a_obj_ss_base.cpp @@ -12,10 +12,8 @@ daObj_SSBase_c::daObj_SSBase_c() { daObj_SSBase_c::~daObj_SSBase_c() {} +void daObj_SSBase_c::setSoldOut() {} + u32 daObj_SSBase_c::getProcessID() { return fopAcM_GetID(this); } - -void daObj_SSBase_c::setSoldOut() { - /* empty function */ -} diff --git a/src/d/actor/d_a_obj_swchain.cpp b/src/d/actor/d_a_obj_swchain.cpp index 207d28671b..3938dc5761 100644 --- a/src/d/actor/d_a_obj_swchain.cpp +++ b/src/d/actor/d_a_obj_swchain.cpp @@ -92,11 +92,12 @@ void daObjSwChain_HIO_c::genMessage(JORMContext* ctx) { // Return Speed・Low ctx->genSlider("戻る速度・低速", &mReturnSpeedLow, 0.0f, 50.0f); // Process Stop - ctx->genCheckBox("処理停止", &mProcessStop, '\x01'); + ctx->genCheckBox("処理停止", &mProcessStop, 0x1, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); // Clawshot Related ctx->genLabel("-- フックショット関係 --", 0); // Reaction Angle Display - ctx->genCheckBox("反応角度表示", &mReactionAngleDisplay, '\x01'); + ctx->genCheckBox("反応角度表示", &mReactionAngleDisplay, 0x1, 0, NULL, 0xffff, 0xffff, 0x200, + 0x18); // Clawshot Reaction Angle ctx->genSlider("フックショット反応角度", &mReactionAngle, 0, 0x7fff); } diff --git a/src/d/actor/d_a_obj_ten.cpp b/src/d/actor/d_a_obj_ten.cpp index 1404757c2c..68c81bf8f4 100644 --- a/src/d/actor/d_a_obj_ten.cpp +++ b/src/d/actor/d_a_obj_ten.cpp @@ -605,14 +605,14 @@ void daObjTEN_c::Z_BufferChk() { { dComIfGd_peekZ(local_5c.x, local_5c.y, &field_0x61c); } - f32 near = dComIfGd_getView()->near; - f32 far = dComIfGd_getView()->far; + f32 near_ = dComIfGd_getView()->near_; + f32 far_ = dComIfGd_getView()->far_; mDoLib_pos2camera(&cStack_68, &local_5c); local_5c.z += 50.0f; if (local_5c.z > 0.0f) { local_5c.z = 0.0f; } - field_0x618 = ((near + ((far * near) / local_5c.z)) / (far - near) + 1.0f) * 16777215.0f; + field_0x618 = ((near_ + ((far_ * near_) / local_5c.z)) / (far_ - near_) + 1.0f) * 16777215.0f; } static u8 hio_set; diff --git a/src/d/actor/d_a_obj_thashi.cpp b/src/d/actor/d_a_obj_thashi.cpp index a702266dd4..0d0e8495a5 100644 --- a/src/d/actor/d_a_obj_thashi.cpp +++ b/src/d/actor/d_a_obj_thashi.cpp @@ -9,7 +9,7 @@ #include "d/d_cc_d.h" #include "d/d_s_play.h" -char* l_arcName = "S_thashi"; +static const char* l_arcName = "S_thashi"; static void dataStripping() { const static u32 ccCylSrc[] = {0, 0x100000, 0, 0x13, 0x100000, 0x1f, 0x75, 0, diff --git a/src/d/actor/d_a_obj_tombo.cpp b/src/d/actor/d_a_obj_tombo.cpp index 4dcf667b72..16b6edddf7 100644 --- a/src/d/actor/d_a_obj_tombo.cpp +++ b/src/d/actor/d_a_obj_tombo.cpp @@ -516,15 +516,15 @@ void daObjTOMBO_c::Z_BufferChk() { { dComIfGd_peekZ(local_5c.x, local_5c.y, &field_0x754); } - f32 near = dComIfGd_getView()->near; - f32 far = dComIfGd_getView()->far; + f32 near_ = dComIfGd_getView()->near_; + f32 far_ = dComIfGd_getView()->far_; mDoLib_pos2camera(&cStack_68, &local_5c); local_5c.z += 50.0f; if (local_5c.z > 0.0f) { local_5c.z = 0.0f; } field_0x750 = - ((near + ((far * near) / local_5c.z)) / (far - near) + 1.0f) * 16777215.0f; + ((near_ + ((far_ * near_) / local_5c.z)) / (far_ - near_) + 1.0f) * 16777215.0f; } int daObjTOMBO_c::Delete() { diff --git a/src/d/actor/d_a_obj_tornado.cpp b/src/d/actor/d_a_obj_tornado.cpp index 3b6c837f73..6761f0a329 100644 --- a/src/d/actor/d_a_obj_tornado.cpp +++ b/src/d/actor/d_a_obj_tornado.cpp @@ -216,7 +216,7 @@ static int daObjTrnd_Create(daObjTrnd_c* i_this) { return i_this->create(); } -void dummyString() { +static void dummyString() { DEAD_STRING(""); } diff --git a/src/d/actor/d_a_obj_waterPillar.cpp b/src/d/actor/d_a_obj_waterPillar.cpp index 65abe22e5c..47e2aecf16 100644 --- a/src/d/actor/d_a_obj_waterPillar.cpp +++ b/src/d/actor/d_a_obj_waterPillar.cpp @@ -110,7 +110,7 @@ const dCcD_SrcGObjInf daWtPillar_c::mCcDObjCoInfo = { {}, // mGObjCo }; -daWtPillar_HIO_c l_HIO; +static daWtPillar_HIO_c l_HIO; dCcD_SrcCps daWtPillar_c::mCcDCps = { daWtPillar_c::mCcDObjInfo, diff --git a/src/d/actor/d_a_obj_wdStick.cpp b/src/d/actor/d_a_obj_wdStick.cpp index d7e5275460..be060df460 100644 --- a/src/d/actor/d_a_obj_wdStick.cpp +++ b/src/d/actor/d_a_obj_wdStick.cpp @@ -435,7 +435,7 @@ void daWdStick_c::mode_proc_roll() { bgCheck(); } -f32 dummyLiteral() { return 100.0f; } +static f32 dummyLiteral() { return 100.0f; } BOOL daWdStick_c::chkWaterLineIn() { return mAcch.m_wtr.GetHeight() > current.pos.y + 40.0f; diff --git a/src/d/actor/d_a_obj_ystone.cpp b/src/d/actor/d_a_obj_ystone.cpp index e7352efcab..09d38e6d8c 100644 --- a/src/d/actor/d_a_obj_ystone.cpp +++ b/src/d/actor/d_a_obj_ystone.cpp @@ -111,11 +111,10 @@ static void action(obj_ystone_class* i_this) { J3DAnmTransform* anm; J3DAnmTextureSRTKey* btk_anm; switch (i_this->mMirrorMode) { - case 0: + case 0: { g_env_light.settingTevStruct(0, &i_this->current.pos, &i_this->tevStr); - static u16 mirror_effect_id[10] = { - 0x89A0, 0x89A1, 0x89A2, 0x89A5, 0x89A6, 0x89A7, 0x89A8, 0x89A9, 0x89AA, 0x89AB - }; + static u16 mirror_effect_id[10] = {0x89A0, 0x89A1, 0x89A2, 0x89A5, 0x89A6, + 0x89A7, 0x89A8, 0x89A9, 0x89AA, 0x89AB}; for (int i = 0; i < 10; i++) { dComIfGp_particle_set(mirror_effect_id[i], &i_this->current.pos, &i_this->tevStr, &i_this->shape_angle, NULL); @@ -125,8 +124,7 @@ static void action(obj_ystone_class* i_this) { anm = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName[i_this->mLevel], 5); i_this->mpMorf->setAnm(anm, 0, 0.0f, 0.0f, 0.0f, -1.0f); i_this->mpMorf->setFrame(1.0f); - break; - + } break; case 1: if (i_this->mTimer == 0) { i_this->mMirrorMode = 2; diff --git a/src/d/actor/d_a_ppolamp.cpp b/src/d/actor/d_a_ppolamp.cpp index e760171d4e..ddac92eb84 100644 --- a/src/d/actor/d_a_ppolamp.cpp +++ b/src/d/actor/d_a_ppolamp.cpp @@ -58,8 +58,13 @@ int daPPolamp_c::draw() { g_env_light.setLightTevColorType_MAJI(mModel1, &tevStr); mDoExt_modelUpdateDL(mModel1); g_env_light.setLightTevColorType_MAJI(mModel2, &tevStr); + #ifdef __MWERKS__ static J3DGXColorS10 TEV_COLOR_1 = (GXColorS10){0x48, 0x85, 0xff, 0xff}; static J3DGXColorS10 TEV_COLOR_2 = (GXColorS10){0, 0, 0xff, 0xff}; + #else + static J3DGXColorS10 TEV_COLOR_1 = GXColorS10 {0x48, 0x85, 0xff, 0xff}; + static J3DGXColorS10 TEV_COLOR_2 = GXColorS10 {0, 0, 0xff, 0xff}; + #endif J3DModelData* modelData = mModel2->getModelData(); for (u16 i = 0; i < modelData->getMaterialNum(); i++) { diff --git a/src/d/actor/d_a_tag_CstaSw.cpp b/src/d/actor/d_a_tag_CstaSw.cpp index 6974c3d5d3..03a07e7a99 100644 --- a/src/d/actor/d_a_tag_CstaSw.cpp +++ b/src/d/actor/d_a_tag_CstaSw.cpp @@ -10,7 +10,7 @@ #include "d/d_debug_viewer.h" #include "d/d_procname.h" -daTagCstaSw_HIO_c l_HIO; + static daTagCstaSw_HIO_c l_HIO; daTagCstaSw_HIO_c::daTagCstaSw_HIO_c() { show_range = 0; diff --git a/src/d/actor/d_a_tag_msg.cpp b/src/d/actor/d_a_tag_msg.cpp index d9cbd2bf66..25cf35e224 100644 --- a/src/d/actor/d_a_tag_msg.cpp +++ b/src/d/actor/d_a_tag_msg.cpp @@ -264,7 +264,7 @@ void daTag_Msg_HIO_c::genMessage(JORMContext* ctx) { } #endif -void dummyString() { +static void dummyString() { DEAD_STRING("Timer"); } diff --git a/src/d/actor/d_a_tag_ss_drink.cpp b/src/d/actor/d_a_tag_ss_drink.cpp index bca1da5abc..86a25148bf 100644 --- a/src/d/actor/d_a_tag_ss_drink.cpp +++ b/src/d/actor/d_a_tag_ss_drink.cpp @@ -246,9 +246,11 @@ static int daTag_SSDrink_IsDelete(void* i_this) { daTag_SSDrink_c::~daTag_SSDrink_c() {} +#ifdef __MWERKS__ void daObj_SSBase_c::setSoldOut() { /* empty function */ } +#endif static actor_method_class daTag_SSDrink_MethodTable = { (process_method_func)daTag_SSDrink_Create, (process_method_func)daTag_SSDrink_Delete, diff --git a/src/d/actor/d_a_title.cpp b/src/d/actor/d_a_title.cpp index 3072d3c24c..55229336b8 100644 --- a/src/d/actor/d_a_title.cpp +++ b/src/d/actor/d_a_title.cpp @@ -182,12 +182,12 @@ void daTitle_c::loadWait_proc() { mTitle.Scr->setPriority("zelda_press_start.blo", 0x100000, mpMount->getArchive()); J2DTextBox* text[7]; - text[0] = (J2DTextBox*)mTitle.Scr->search('t_s_00'); - text[1] = (J2DTextBox*)mTitle.Scr->search('t_s_01'); - text[2] = (J2DTextBox*)mTitle.Scr->search('t_s_02'); - text[3] = (J2DTextBox*)mTitle.Scr->search('t_s_03'); - text[4] = (J2DTextBox*)mTitle.Scr->search('t_s_04'); - text[5] = (J2DTextBox*)mTitle.Scr->search('t_s_05'); + text[0] = (J2DTextBox*)mTitle.Scr->search(MULTI_CHAR('t_s_00')); + text[1] = (J2DTextBox*)mTitle.Scr->search(MULTI_CHAR('t_s_01')); + text[2] = (J2DTextBox*)mTitle.Scr->search(MULTI_CHAR('t_s_02')); + text[3] = (J2DTextBox*)mTitle.Scr->search(MULTI_CHAR('t_s_03')); + text[4] = (J2DTextBox*)mTitle.Scr->search(MULTI_CHAR('t_s_04')); + text[5] = (J2DTextBox*)mTitle.Scr->search(MULTI_CHAR('t_s_05')); text[6] = (J2DTextBox*)mTitle.Scr->search('t_o'); for (int i = 0; i < 7; i++) { @@ -196,9 +196,9 @@ void daTitle_c::loadWait_proc() { fopMsgM_messageGet(text[i]->getStringPtr(), 100); } - field_0x600 = new CPaneMgrAlpha(mTitle.Scr, 'n_all', 2, NULL); + field_0x600 = new CPaneMgrAlpha(mTitle.Scr, MULTI_CHAR('n_all'), 2, NULL); field_0x600->setAlpha(0); - J2DPane* pane = mTitle.Scr->search('n_all'); + J2DPane* pane = mTitle.Scr->search(MULTI_CHAR('n_all')); pane->translate(g_daTitHIO.mPSPosX, g_daTitHIO.mPSPosY); pane->scale(g_daTitHIO.mPSScaleX, g_daTitHIO.mPSScaleY); mpHeap->becomeCurrentHeap(); diff --git a/src/d/d_bright_check.cpp b/src/d/d_bright_check.cpp index 75537717e1..e7695b7451 100644 --- a/src/d/d_bright_check.cpp +++ b/src/d/d_bright_check.cpp @@ -28,32 +28,32 @@ dBrightCheck_c::~dBrightCheck_c() { void dBrightCheck_c::screenSet() { static u64 const tv_btnA[] = { - 'cont_at1', 'cont_at2', 'cont_at3', 'cont_at4', 'cont_at', + MULTI_CHAR('cont_at1'), MULTI_CHAR('cont_at2'), MULTI_CHAR('cont_at3'), MULTI_CHAR('cont_at4'), MULTI_CHAR('cont_at'), }; static u64 const ftv_btnA[] = { - 'font_a1', 'font_at2', 'font_at3', 'font_at4', 'font_at', + MULTI_CHAR('font_a1'), MULTI_CHAR('font_at2'), MULTI_CHAR('font_at3'), MULTI_CHAR('font_at4'), MULTI_CHAR('font_at'), }; #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) static u64 const txTV[] = { - 'menu_t6s', 'menu_t6', 'menu_t9s', 'menu_t9', 'menut10s', - 'menu_t10', 'menu_t7s', 'menu_t7', 'menu_t8s', 'menu_t8', + MULTI_CHAR('menu_t6s'), MULTI_CHAR('menu_t6'), MULTI_CHAR('menu_t9s'), MULTI_CHAR('menu_t9'), MULTI_CHAR('menut10s'), + MULTI_CHAR('menu_t10'), MULTI_CHAR('menu_t7s'), MULTI_CHAR('menu_t7'), MULTI_CHAR('menu_t8s'), MULTI_CHAR('menu_t8'), }; #else static u64 const txTV[] = { - 'menu_t61', 'menu_t2', 'menu_t91', 'menu_t1', 'menut101', - 'menu_t01', 'menu_t71', 'menu_t3', 'menu_t81', 'menu_t4', + MULTI_CHAR('menu_t61'), MULTI_CHAR('menu_t2'), MULTI_CHAR('menu_t91'), MULTI_CHAR('menu_t1'), MULTI_CHAR('menut101'), + MULTI_CHAR('menu_t01'), MULTI_CHAR('menu_t71'), MULTI_CHAR('menu_t3'), MULTI_CHAR('menu_t81'), MULTI_CHAR('menu_t4'), }; #endif #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) static u64 const txTVhide[] = { - 'fmenu_6n', 'fmenu_9n', 'fmenu_10', 'fmenu_7n', 'fmenu_8n', + MULTI_CHAR('fmenu_6n'), MULTI_CHAR('fmenu_9n'), MULTI_CHAR('fmenu_10'), MULTI_CHAR('fmenu_7n'), MULTI_CHAR('fmenu_8n'), }; #else static u64 const txTVhide[] = { - 'menu_6n', 'menu_9n', 'menu_10n', 'menu_7n', 'menu_8n', + MULTI_CHAR('menu_6n'), MULTI_CHAR('menu_9n'), MULTI_CHAR('menu_10n'), MULTI_CHAR('menu_7n'), MULTI_CHAR('menu_8n'), }; #endif @@ -61,16 +61,16 @@ void dBrightCheck_c::screenSet() { JUT_ASSERT(0, mBrightCheck.Scr != NULL); mBrightCheck.Scr->setPriority("zelda_option_check.blo", 0x1100000, mArchive); - mBrightCheck.Scr->search('g_abtn_n')->hide(); + mBrightCheck.Scr->search(MULTI_CHAR('g_abtn_n'))->hide(); #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - J2DTextBox* settings_text = (J2DTextBox*)mBrightCheck.Scr->search('t_t00'); - mBrightCheck.Scr->search('t_t00')->show(); - mBrightCheck.Scr->search('f_t00')->hide(); + J2DTextBox* settings_text = (J2DTextBox*)mBrightCheck.Scr->search(MULTI_CHAR('t_t00')); + mBrightCheck.Scr->search(MULTI_CHAR('t_t00'))->show(); + mBrightCheck.Scr->search(MULTI_CHAR('f_t00'))->hide(); #else - J2DTextBox* settings_text = (J2DTextBox*)mBrightCheck.Scr->search('f_t00'); - mBrightCheck.Scr->search('f_t00')->show(); - mBrightCheck.Scr->search('t_t00')->hide(); + J2DTextBox* settings_text = (J2DTextBox*)mBrightCheck.Scr->search(MULTI_CHAR('f_t00')); + mBrightCheck.Scr->search(MULTI_CHAR('f_t00'))->show(); + mBrightCheck.Scr->search(MULTI_CHAR('t_t00'))->hide(); #endif settings_text->setFont(mDoExt_getRubyFont()); diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp index 9e7bf7c9d2..cd2c187a20 100644 --- a/src/d/d_camera.cpp +++ b/src/d/d_camera.cpp @@ -10763,10 +10763,10 @@ static void view_setup(camera_process_class* i_this) { dComIfGd_setViewport(viewport); dComIfGd_setView(view); - f32 far; + f32 far_; f32 var_f30; if (getComStat(8)) { - far = view->far; + far_ = view->far_; } else { #if DEBUG if (g_envHIO.mOther.mAdjustCullFar != 0) { @@ -10776,10 +10776,10 @@ static void view_setup(camera_process_class* i_this) { { var_f30 = dStage_stagInfo_GetCullPoint(dComIfGp_getStageStagInfo()); } - far = var_f30; + far_ = var_f30; } - mDoLib_clipper::setup(view->fovy, view->aspect, view->near, far); + mDoLib_clipper::setup(view->fovy, view->aspect, view->near_, far_); } static void store(camera_process_class* i_camera) { @@ -10990,7 +10990,7 @@ static int camera_draw(camera_process_class* i_this) { int trim_height = body->TrimHeight(); window->setScissor(0.0f, trim_height, FB_WIDTH, FB_HEIGHT - trim_height * 2.0f); - C_MTXPerspective(process->projMtx, process->fovy, process->aspect, process->near, process->far); + C_MTXPerspective(process->projMtx, process->fovy, process->aspect, process->near_, process->far_); mDoMtx_lookAt(process->viewMtx, &process->lookat.eye, &process->lookat.center, &process->lookat.up, process->bank); diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index 50099a9a91..57b76d8b10 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -2634,6 +2634,7 @@ BOOL dComIfGp_TransportWarp_check() { int dComLbG_PhaseHandler(request_of_phase_process_class* i_phaseReq, cPhs__Handler* i_handler, void* i_data) { int phase = cPhs_Handler(i_phaseReq, i_handler, i_data); + switch (phase) { case cPhs_NEXT_e: phase = dComLbG_PhaseHandler(i_phaseReq, i_handler, i_data); diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp index 2a7c74f40b..1181ce2abf 100644 --- a/src/d/d_demo.cpp +++ b/src/d/d_demo.cpp @@ -450,7 +450,7 @@ f32 dDemo_camera_c::JSGGetProjectionNear() const { return 0.0f; } - return view->near; + return view->near_; } void dDemo_camera_c::JSGSetProjectionNear(f32 i_projNear) { @@ -465,7 +465,7 @@ f32 dDemo_camera_c::JSGGetProjectionFar() const { return 1.0f; } - return view->far; + return view->far_; } void dDemo_camera_c::JSGSetProjectionFar(f32 i_projFar) { diff --git a/src/d/d_drawlist.cpp b/src/d/d_drawlist.cpp index ddea5f1128..855566b7c7 100644 --- a/src/d/d_drawlist.cpp +++ b/src/d/d_drawlist.cpp @@ -1,5 +1,6 @@ #include "d/dolzel.h" // IWYU pragma: keep +#include #include "JSystem/J2DGraph/J2DAnimation.h" #include "JSystem/J2DGraph/J2DGrafContext.h" #include "JSystem/J2DGraph/J2DScreen.h" @@ -622,7 +623,7 @@ static u8 l_shadowSealDL[] ATTRIBUTE_ALIGN(32) = { }; dDlst_2DT2_c::dDlst_2DT2_c() { - field_0x40 = (GXColor){0, 0, 0, 0}; + field_0x40 = COMPOUND_LITERAL(GXColor){0, 0, 0, 0}; } void dDlst_2DT2_c::init(ResTIMG* i_timg, f32 param_1, f32 param_2, f32 param_3, f32 param_4, @@ -634,7 +635,7 @@ void dDlst_2DT2_c::init(ResTIMG* i_timg, f32 param_1, f32 param_2, f32 param_3, field_0x30 = param_4; mScaleX = i_scaleX; mScaleY = i_scaleY; - field_0x3c = (GXColor){0, 0, 0, 255}; + field_0x3c = COMPOUND_LITERAL(GXColor){0, 0, 0, 255}; field_0x44 = param_6; if (field_0x44 != 0 && GXGetTexObjWrapS(&mTexObj) == 2) { @@ -865,6 +866,13 @@ dDlst_2D_c::dDlst_2D_c(ResTIMG* i_timg, s16 i_posX, s16 i_posY, s16 i_sizeX, s16 } void dDlst_2D_c::draw() { + static int s2DDrawLogCount = 0; + if (s2DDrawLogCount < 10) { + printf("[DIAG] dDlst_2D_c::draw: pos=(%d,%d) size=(%d,%d) alpha=%d\n", + mPosX, mPosY, mSizeX, mSizeY, mAlpha); + fflush(stdout); + s2DDrawLogCount++; + } mpPicture.setAlpha(mAlpha); mpPicture.draw(mPosX, mPosY, mSizeX, mSizeY, false, false, false); } diff --git a/src/d/d_error_msg.cpp b/src/d/d_error_msg.cpp index 2436f983ea..ffde521eaf 100644 --- a/src/d/d_error_msg.cpp +++ b/src/d/d_error_msg.cpp @@ -72,9 +72,9 @@ static void messageSet(u32 status, bool i_drawBg) { JUT_ASSERT(102, strlen(msg_p)-1 < 512); - J2DTextBox tpane('TEXT1', JGeometry::TBox2(0.0f, 0.0f, FB_WIDTH, 200.0f), (ResFONT*)font_data, msg_p, 512, HBIND_CENTER, VBIND_CENTER); - J2DTextBox spane('TEXT2', JGeometry::TBox2(0.0f, 0.0f, FB_WIDTH, 200.0f), (ResFONT*)font_data, msg_p, 512, HBIND_CENTER, VBIND_CENTER); - J2DPicture ppane('PICT1', JGeometry::TBox2(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT), (ResTIMG*)black_tex, NULL); + J2DTextBox tpane(MULTI_CHAR('TEXT1'), JGeometry::TBox2(0.0f, 0.0f, FB_WIDTH, 200.0f), (ResFONT*)font_data, msg_p, 512, HBIND_CENTER, VBIND_CENTER); + J2DTextBox spane(MULTI_CHAR('TEXT2'), JGeometry::TBox2(0.0f, 0.0f, FB_WIDTH, 200.0f), (ResFONT*)font_data, msg_p, 512, HBIND_CENTER, VBIND_CENTER); + J2DPicture ppane(MULTI_CHAR('PICT1'), JGeometry::TBox2(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT), (ResTIMG*)black_tex, NULL); JUTResFont font((ResFONT*)font_data, NULL); JUTFont* pfont = (JUTFont*)&font; diff --git a/src/d/d_ev_camera.cpp b/src/d/d_ev_camera.cpp index 1cd4c3e3b7..20d9f359c6 100644 --- a/src/d/d_ev_camera.cpp +++ b/src/d/d_ev_camera.cpp @@ -12,6 +12,12 @@ #include "d/d_drawlist.h" #include "d/actor/d_a_alink.h" +#ifdef __MWERKS__ +#define LOAD_4BYTE_STRING_LITERAL(x) (*(u32*)(x)) +#else +#define LOAD_4BYTE_STRING_LITERAL(x) read_big_endian_u32(x) +#endif + namespace { static bool isStageEvent(int param_0) { dStage_MapEventInfo_c* info = dComIfGp_getStage()->getMapEventInfo(); @@ -400,19 +406,19 @@ fopAc_ac_c* dCamera_c::getEvActor(char* i_event) { } fopAc_ac_c* actor; - if (*(u32*)string == '@PLA') { + if (LOAD_4BYTE_STRING_LITERAL(string) == '@PLA') { actor = mpPlayerActor; - } else if (*(u32*)string == '@STA') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == '@STA') { actor = dComIfGp_event_getPt1(); - } else if (*(u32*)string == '@PAR') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == '@PAR') { actor = dComIfGp_event_getPt2(); - } else if (*(u32*)string == '@TAL') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == '@TAL') { actor = dComIfGp_event_getTalkPartner(); - } else if (*(u32*)string == '@DOO') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == '@DOO') { actor = dComIfGp_event_getDoorPartner(); - } else if (*(u32*)string == '@TAR' || *(u32*)string == '@ITE') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == '@TAR' || LOAD_4BYTE_STRING_LITERAL(string) == '@ITE') { actor = dComIfGp_event_getItemPartner(); - } else if (*(u32*)string == 'Link') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == 'Link') { actor = dComIfGp_getLinkPlayer(); } else { actor = fopAcM_searchFromName4Event(string, -1); @@ -440,19 +446,19 @@ fopAc_ac_c* dCamera_c::getEvActor(char* i_event, char* param_1) { char* name_str = string; fopAc_ac_c* actor; - if (*(u32*)string == '@PLA') { + if (LOAD_4BYTE_STRING_LITERAL(string) == '@PLA') { actor = mpPlayerActor; - } else if (*(u32*)string == '@STA') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == '@STA') { actor = dComIfGp_event_getPt1(); - } else if (*(u32*)string == '@PAR') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == '@PAR') { actor = dComIfGp_event_getPt2(); - } else if (*(u32*)string == '@TAL') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == '@TAL') { actor = dComIfGp_event_getTalkPartner(); - } else if (*(u32*)string == '@DOO') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == '@DOO') { actor = dComIfGp_event_getDoorPartner(); - } else if (*(u32*)string == '@TAR' || *(u32*)string == '@ITE') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == '@TAR' || LOAD_4BYTE_STRING_LITERAL(string) == '@ITE') { actor = dComIfGp_event_getItemPartner(); - } else if (*(u32*)string == 'Link') { + } else if (LOAD_4BYTE_STRING_LITERAL(string) == 'Link') { actor = dComIfGp_getLinkPlayer(); } else { actor = fopAcM_searchFromName4Event(name_str, -1); @@ -1925,7 +1931,8 @@ bool dCamera_c::styleEvCamera() { field_0x160 = 0; } - s32 style = mCamParam.SearchStyle(*(u32*)getEvStringPntData("Name", "FN01")); + s32 style = + mCamParam.SearchStyle(LOAD_4BYTE_STRING_LITERAL(getEvStringPntData("Name", "FN01"))); (this->*engine_tbl[mCamParam.Algorythmn(style)])(style); return isModeOK(); } diff --git a/src/d/d_file_sel_info.cpp b/src/d/d_file_sel_info.cpp index e5a09df1e2..f869a08c61 100644 --- a/src/d/d_file_sel_info.cpp +++ b/src/d/d_file_sel_info.cpp @@ -35,24 +35,24 @@ void dFile_info_c::screenSet() { mFileInfo.Scr->setPriority("zelda_file_select_info_text.blo", 0x1100000, mArchive); mFileInfo.mFont = mDoExt_getMesgFont(); - mFileInfo.Scr->search('w_cp_ef1')->hide(); - mFileInfo.field_0x10 = mFileInfo.Scr->search('w_dat_i1'); - mDatBase = new CPaneMgrAlpha(mFileInfo.Scr, 'w_dat_i1', 2, NULL); - mNoDatBase = new CPaneMgrAlpha(mFileInfo.Scr, 'w_nda_i1', 2, NULL); + mFileInfo.Scr->search(MULTI_CHAR('w_cp_ef1'))->hide(); + mFileInfo.field_0x10 = mFileInfo.Scr->search(MULTI_CHAR('w_dat_i1')); + mDatBase = new CPaneMgrAlpha(mFileInfo.Scr, MULTI_CHAR('w_dat_i1'), 2, NULL); + mNoDatBase = new CPaneMgrAlpha(mFileInfo.Scr, MULTI_CHAR('w_nda_i1'), 2, NULL); J2DTextBox* info_text[4]; #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - info_text[0] = (J2DTextBox*)mFileInfo.Scr->search('w_s_t_01'); - info_text[1] = (J2DTextBox*)mFileInfo.Scr->search('w_p_t_01'); - mFileInfo.Scr->search('f_s_t_02')->hide(); - mFileInfo.Scr->search('f_p_t_02')->hide(); + info_text[0] = (J2DTextBox*)mFileInfo.Scr->search(MULTI_CHAR('w_s_t_01')); + info_text[1] = (J2DTextBox*)mFileInfo.Scr->search(MULTI_CHAR('w_p_t_01')); + mFileInfo.Scr->search(MULTI_CHAR('f_s_t_02'))->hide(); + mFileInfo.Scr->search(MULTI_CHAR('f_p_t_02'))->hide(); #else - info_text[0] = (J2DTextBox*)mFileInfo.Scr->search('f_s_t_02'); - info_text[1] = (J2DTextBox*)mFileInfo.Scr->search('f_p_t_02'); - mFileInfo.Scr->search('w_s_t_01')->hide(); - mFileInfo.Scr->search('w_p_t_01')->hide(); + info_text[0] = (J2DTextBox*)mFileInfo.Scr->search(MULTI_CHAR('f_s_t_02')); + info_text[1] = (J2DTextBox*)mFileInfo.Scr->search(MULTI_CHAR('f_p_t_02')); + mFileInfo.Scr->search(MULTI_CHAR('w_s_t_01'))->hide(); + mFileInfo.Scr->search(MULTI_CHAR('w_p_t_01'))->hide(); #endif for (int i = 0; i < 2; i++) { @@ -63,19 +63,19 @@ void dFile_info_c::screenSet() { dMeter2Info_getString(0x3D1, info_text[1]->getStringPtr(), NULL); // Total play time #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - info_text[0] = (J2DTextBox*)mFileInfo.Scr->search('w_name01'); - info_text[1] = (J2DTextBox*)mFileInfo.Scr->search('w_new_1'); - mFileInfo.Scr->search('f_name01')->hide(); - mFileInfo.Scr->search('f_new_1')->hide(); + info_text[0] = (J2DTextBox*)mFileInfo.Scr->search(MULTI_CHAR('w_name01')); + info_text[1] = (J2DTextBox*)mFileInfo.Scr->search(MULTI_CHAR('w_new_1')); + mFileInfo.Scr->search(MULTI_CHAR('f_name01'))->hide(); + mFileInfo.Scr->search(MULTI_CHAR('f_new_1'))->hide(); #else - info_text[0] = (J2DTextBox*)mFileInfo.Scr->search('f_name01'); - info_text[1] = (J2DTextBox*)mFileInfo.Scr->search('f_new_1'); - mFileInfo.Scr->search('w_name01')->hide(); - mFileInfo.Scr->search('w_new_1')->hide(); + info_text[0] = (J2DTextBox*)mFileInfo.Scr->search(MULTI_CHAR('f_name01')); + info_text[1] = (J2DTextBox*)mFileInfo.Scr->search(MULTI_CHAR('f_new_1')); + mFileInfo.Scr->search(MULTI_CHAR('w_name01'))->hide(); + mFileInfo.Scr->search(MULTI_CHAR('w_new_1'))->hide(); #endif - info_text[2] = (J2DTextBox*)mFileInfo.Scr->search('w_time01'); - info_text[3] = (J2DTextBox*)mFileInfo.Scr->search('w_ptim01'); + info_text[2] = (J2DTextBox*)mFileInfo.Scr->search(MULTI_CHAR('w_time01')); + info_text[3] = (J2DTextBox*)mFileInfo.Scr->search(MULTI_CHAR('w_ptim01')); for (int i = 0; i < 4; i++) { info_text[i]->setFont(mFileInfo.mFont); @@ -119,9 +119,9 @@ int dFile_info_c::setSaveData(dSv_save_c* i_savedata, BOOL i_validChksum, u8 i_d void dFile_info_c::setHeartCnt(dSv_save_c* i_savedata) { static u64 l_htag[] = { - 'hear_20', 'hear_21', 'hear_22', 'hear_23', 'hear_24', 'hear_25', 'hear_26', - 'hear_27', 'hear_28', 'hear_29', 'hear_30', 'hear_31', 'hear_32', 'hear_33', - 'hear_34', 'hear_35', 'hear_36', 'hear_37', 'hear_38', 'hear_39', + MULTI_CHAR('hear_20'), MULTI_CHAR('hear_21'), MULTI_CHAR('hear_22'), MULTI_CHAR('hear_23'), MULTI_CHAR('hear_24'), MULTI_CHAR('hear_25'), MULTI_CHAR('hear_26'), + MULTI_CHAR('hear_27'), MULTI_CHAR('hear_28'), MULTI_CHAR('hear_29'), MULTI_CHAR('hear_30'), MULTI_CHAR('hear_31'), MULTI_CHAR('hear_32'), MULTI_CHAR('hear_33'), + MULTI_CHAR('hear_34'), MULTI_CHAR('hear_35'), MULTI_CHAR('hear_36'), MULTI_CHAR('hear_37'), MULTI_CHAR('hear_38'), MULTI_CHAR('hear_39'), }; static const char* amariheartTex[] = { @@ -215,7 +215,7 @@ void dDlst_FileInfo_c::draw() { MTXScale(m, mBasePane->getWidth() / field_0x10->getWidth(), mBasePane->getHeight() / field_0x10->getHeight(), 1.0f); MTXConcat(glb_mtx, m, glb_mtx); - Scr->search('Nm_02')->setMtx(glb_mtx); + Scr->search(MULTI_CHAR('Nm_02'))->setMtx(glb_mtx); } Scr->draw(0.0f, 0.0f, graf_ctx); diff --git a/src/d/d_file_sel_warning.cpp b/src/d/d_file_sel_warning.cpp index 3063012ea0..4fbce3920b 100644 --- a/src/d/d_file_sel_warning.cpp +++ b/src/d/d_file_sel_warning.cpp @@ -59,20 +59,20 @@ void dFile_warning_c::screenSet() { mFileWarn.Scr->animation(); mFileWarn.mFont = mDoExt_getMesgFont(); - mpRootPane = new CPaneMgr(mFileWarn.Scr, 'Nm_02', 0, NULL); + mpRootPane = new CPaneMgr(mFileWarn.Scr, MULTI_CHAR('Nm_02'), 0, NULL); JUT_ASSERT(0, mpRootPane != NULL); field_0x34 = mpRootPane->getTranslateY(); #if REGION_JPN - mFileWarn.Scr->search('ms_for_2')->hide(); - mFileWarn.Scr->search('ms_for_3')->hide(); + mFileWarn.Scr->search(MULTI_CHAR('ms_for_2'))->hide(); + mFileWarn.Scr->search(MULTI_CHAR('ms_for_3'))->hide(); - field_0x20 = static_cast(mFileWarn.Scr->search('w_msg_jp')); + field_0x20 = static_cast(mFileWarn.Scr->search(MULTI_CHAR('w_msg_jp'))); #else - mFileWarn.Scr->search('w_msg_jp')->hide(); - mFileWarn.Scr->search('ms_for_2')->hide(); + mFileWarn.Scr->search(MULTI_CHAR('w_msg_jp'))->hide(); + mFileWarn.Scr->search(MULTI_CHAR('ms_for_2'))->hide(); - field_0x20 = static_cast(mFileWarn.Scr->search('ms_for_3')); + field_0x20 = static_cast(mFileWarn.Scr->search(MULTI_CHAR('ms_for_3'))); #endif field_0x20->show(); field_0x20->setFont(mFileWarn.mFont); diff --git a/src/d/d_file_select.cpp b/src/d/d_file_select.cpp index 19db401276..865dd109fc 100644 --- a/src/d/d_file_select.cpp +++ b/src/d/d_file_select.cpp @@ -58,7 +58,7 @@ static s32 MenuSelEndFrameTbl[3] = { 898, }; -static u64 l_tagName13[3] = {'w_dat_i0', 'w_dat_i1', 'w_dat_i2'}; +static u64 l_tagName13[3] = {MULTI_CHAR('w_dat_i0'), MULTI_CHAR('w_dat_i1'), MULTI_CHAR('w_dat_i2')}; dFs_HIO_c::dFs_HIO_c() { base_effect_appear_frames = 5; @@ -806,15 +806,15 @@ void dFile_select_c::dataSelectStart() { yesnoMenuMoveAnmInitSet(0x473, 0x47d); selectWakuAlpahAnmInit(mSelectNum, 0xff, 0, g_fsHIO.select_box_appear_frames); - mSelDt.ScrDt->search('ken_00')->hide(); - mSelDt.ScrDt->search('ken_01')->hide(); - mSelDt.ScrDt->search('ken_02')->hide(); - mSelDt.ScrDt->search('tate_00')->hide(); - mSelDt.ScrDt->search('tate_01')->hide(); - mSelDt.ScrDt->search('tate_02')->hide(); - mSelDt.ScrDt->search('fuku_00')->hide(); - mSelDt.ScrDt->search('fuku_01')->hide(); - mSelDt.ScrDt->search('fuku_02')->hide(); + mSelDt.ScrDt->search(MULTI_CHAR('ken_00'))->hide(); + mSelDt.ScrDt->search(MULTI_CHAR('ken_01'))->hide(); + mSelDt.ScrDt->search(MULTI_CHAR('ken_02'))->hide(); + mSelDt.ScrDt->search(MULTI_CHAR('tate_00'))->hide(); + mSelDt.ScrDt->search(MULTI_CHAR('tate_01'))->hide(); + mSelDt.ScrDt->search(MULTI_CHAR('tate_02'))->hide(); + mSelDt.ScrDt->search(MULTI_CHAR('fuku_00'))->hide(); + mSelDt.ScrDt->search(MULTI_CHAR('fuku_01'))->hide(); + mSelDt.ScrDt->search(MULTI_CHAR('fuku_02'))->hide(); mpFileSelect3d->drawOff(); mDataSelProc = DATASELPROC_SELECT_DATA_OPENERASE_MOVE; @@ -1001,8 +1001,8 @@ void dFile_select_c::dataSelectMoveAnime() { void dFile_select_c::makeRecInfo(u8 i_dataNo) { dSv_save_c* pSave = (dSv_save_c*)&mSaveData[i_dataNo]; - J2DPane* ken0 = mSelDt.ScrDt->search('ken_00'); - J2DPane* ken1 = mSelDt.ScrDt->search('ken_01'); + J2DPane* ken0 = mSelDt.ScrDt->search(MULTI_CHAR('ken_00')); + J2DPane* ken1 = mSelDt.ScrDt->search(MULTI_CHAR('ken_01')); ken0->hide(); ken1->hide(); @@ -1016,7 +1016,7 @@ void dFile_select_c::makeRecInfo(u8 i_dataNo) { ken1->hide(); } - J2DPane* ken2 = mSelDt.ScrDt->search('ken_02'); + J2DPane* ken2 = mSelDt.ScrDt->search(MULTI_CHAR('ken_02')); if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_MASTER_SWORD) || pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_LIGHT_SWORD)) { @@ -1025,8 +1025,8 @@ void dFile_select_c::makeRecInfo(u8 i_dataNo) { ken2->hide(); } - J2DPane* tate0 = mSelDt.ScrDt->search('tate_00'); - J2DPane* tate1 = mSelDt.ScrDt->search('tate_01'); + J2DPane* tate0 = mSelDt.ScrDt->search(MULTI_CHAR('tate_00')); + J2DPane* tate1 = mSelDt.ScrDt->search(MULTI_CHAR('tate_01')); tate0->hide(); tate1->hide(); @@ -1038,28 +1038,28 @@ void dFile_select_c::makeRecInfo(u8 i_dataNo) { tate1->show(); } - J2DPane* tate2 = mSelDt.ScrDt->search('tate_02'); + J2DPane* tate2 = mSelDt.ScrDt->search(MULTI_CHAR('tate_02')); if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_HYLIA_SHIELD)) { tate2->show(); } else { tate2->hide(); } - J2DPane* fuku0 = mSelDt.ScrDt->search('fuku_00'); + J2DPane* fuku0 = mSelDt.ScrDt->search(MULTI_CHAR('fuku_00')); if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_WEAR_KOKIRI)) { fuku0->show(); } else { fuku0->hide(); } - J2DPane* fuku1 = mSelDt.ScrDt->search('fuku_01'); + J2DPane* fuku1 = mSelDt.ScrDt->search(MULTI_CHAR('fuku_01')); if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_WEAR_ZORA)) { fuku1->show(); } else { fuku1->hide(); } - J2DPane* fuku2 = mSelDt.ScrDt->search('fuku_02'); + J2DPane* fuku2 = mSelDt.ScrDt->search(MULTI_CHAR('fuku_02')); if (pSave->getPlayer().getGetItem().isFirstBit(fpcNm_ITEM_ARMOR)) { fuku2->show(); } else { @@ -1658,7 +1658,7 @@ void dFile_select_c::copySelMoveAnmInitSet(int param_0, int param_1) { } void dFile_select_c::setSaveDataForCopySel() { - static u64 l_tagName101[2] = {'w_nun01', 'w_nun02'}; + static u64 l_tagName101[2] = {MULTI_CHAR('w_nun01'), MULTI_CHAR('w_nun02')}; static char* l_numTex[3] = {"tt_1_metal_40x40.bti", "tt_2_metal_40x40.bti", "tt_3_metal_40x40.bti"}; SaveDataBuf* pSave = mSaveData; @@ -2900,31 +2900,31 @@ void dFile_select_c::cardToNandDataCopyErrDisp3() { #endif void dFile_select_c::screenSet() { - static u64 l_tagName0[3] = {'w_sel_00', 'w_sel_01', 'w_sel_02'}; - static u64 l_tagName3[3] = {'w_moyo00', 'w_moyo01', 'w_moyo02'}; - static u64 l_tagName4[3] = {'w_gold00', 'w_gold01', 'w_gold02'}; - static u64 l_tagName5[3] = {'w_go2_00', 'w_go2_01', 'w_go2_02'}; - static u64 l_tagName12[3] = {'w_bk_l00', 'w_bk_l01', 'w_bk_l02'}; - static u64 l_nouseTag[15] = {'w_mcheck', 'w_tabi1', 'w_tabi2', 'w_tabi3', 'w_doko_c', - 'w_uwa_c', 'w_cp_chu', 'w_cpsita', 'w_cp_x', 'w_de', - 'w_de_chu', 'w_desita', 'w_de_x', 'w_name', 'w_h_name'}; + static u64 l_tagName0[3] = {MULTI_CHAR('w_sel_00'), MULTI_CHAR('w_sel_01'), MULTI_CHAR('w_sel_02')}; + static u64 l_tagName3[3] = {MULTI_CHAR('w_moyo00'), MULTI_CHAR('w_moyo01'), MULTI_CHAR('w_moyo02')}; + static u64 l_tagName4[3] = {MULTI_CHAR('w_gold00'), MULTI_CHAR('w_gold01'), MULTI_CHAR('w_gold02')}; + static u64 l_tagName5[3] = {MULTI_CHAR('w_go2_00'), MULTI_CHAR('w_go2_01'), MULTI_CHAR('w_go2_02')}; + static u64 l_tagName12[3] = {MULTI_CHAR('w_bk_l00'), MULTI_CHAR('w_bk_l01'), MULTI_CHAR('w_bk_l02')}; + static u64 l_nouseTag[15] = {MULTI_CHAR('w_mcheck'), MULTI_CHAR('w_tabi1'), MULTI_CHAR('w_tabi2'), MULTI_CHAR('w_tabi3'), MULTI_CHAR('w_doko_c'), + MULTI_CHAR('w_uwa_c'), MULTI_CHAR('w_cp_chu'), MULTI_CHAR('w_cpsita'), MULTI_CHAR('w_cp_x'), 'w_de', + MULTI_CHAR('w_de_chu'), MULTI_CHAR('w_desita'), MULTI_CHAR('w_de_x'), MULTI_CHAR('w_name'), MULTI_CHAR('w_h_name')}; #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - static u64 l_tagName21[2] = {'w_tabi_s', 'w_tabi_x'}; + static u64 l_tagName21[2] = {MULTI_CHAR('w_tabi_s'), MULTI_CHAR('w_tabi_x')}; #else - static u64 l_tagName21[2] = {'t_for', 't_for1'}; + static u64 l_tagName21[2] = {MULTI_CHAR('t_for'), MULTI_CHAR('t_for1')}; #endif - static u64 l_tagName18[3] = {'w_de_ef0', 'w_de_ef1', 'w_de_ef2'}; - static u64 l_tagName19[3] = {'w_cp_ef0', 'w_cp_ef1', 'w_cp_ef2'}; + static u64 l_tagName18[3] = {MULTI_CHAR('w_de_ef0'), MULTI_CHAR('w_de_ef1'), MULTI_CHAR('w_de_ef2')}; + static u64 l_tagName19[3] = {MULTI_CHAR('w_cp_ef0'), MULTI_CHAR('w_cp_ef1'), MULTI_CHAR('w_cp_ef2')}; #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - static u64 l_tagName20[2] = {'w_er_msg', 'w_er_msR'}; + static u64 l_tagName20[2] = {MULTI_CHAR('w_er_msg'), MULTI_CHAR('w_er_msR')}; #else - static u64 l_tagName20[2] = {'er_for0', 'er_for1'}; + static u64 l_tagName20[2] = {MULTI_CHAR('er_for0'), MULTI_CHAR('er_for1')}; #endif - static u64 l_tagName131[3] = {'N_sel_00', 'N_sel_01', 'N_sel_02'}; + static u64 l_tagName131[3] = {MULTI_CHAR('N_sel_00'), MULTI_CHAR('N_sel_01'), MULTI_CHAR('N_sel_02')}; fileSel.Scr = new J2DScreen(); JUT_ASSERT(4917, fileSel.Scr != NULL); @@ -2943,27 +2943,27 @@ void dFile_select_c::screenSet() { field_0x0090->searchUpdateMaterialID(fileSel.Scr); field_0x009c->searchUpdateMaterialID(fileSel.Scr); - mBaseMovePane = new CPaneMgr(fileSel.Scr, 'w_move_n', 0, NULL); - mBaseSubPane = fileSel.Scr->search('w_sub_n'); + mBaseMovePane = new CPaneMgr(fileSel.Scr, MULTI_CHAR('w_move_n'), 0, NULL); + mBaseSubPane = fileSel.Scr->search(MULTI_CHAR('w_sub_n')); for (int i = 0; i < 3; i++) { mSelFilePanes[i] = new CPaneMgr(fileSel.Scr, l_tagName0[i], 1, NULL); } - fileSel.Scr->search('Wi_btn_n')->hide(); - mBbtnPane = new CPaneMgrAlpha(fileSel.Scr, 'w_n_bbtn', 2, NULL); - mAbtnPane = new CPaneMgrAlpha(fileSel.Scr, 'w_n_abtn', 2, NULL); + fileSel.Scr->search(MULTI_CHAR('Wi_btn_n'))->hide(); + mBbtnPane = new CPaneMgrAlpha(fileSel.Scr, MULTI_CHAR('w_n_bbtn'), 2, NULL); + mAbtnPane = new CPaneMgrAlpha(fileSel.Scr, MULTI_CHAR('w_n_abtn'), 2, NULL); #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - mModoruTxtPane = new CPaneMgrAlpha(fileSel.Scr, 'w_modo', 2, NULL); - mKetteiTxtPane = new CPaneMgrAlpha(fileSel.Scr, 'w_kete', 2, NULL); - fileSel.Scr->search('f_modo')->hide(); - fileSel.Scr->search('f_kete')->hide(); + mModoruTxtPane = new CPaneMgrAlpha(fileSel.Scr, MULTI_CHAR('w_modo'), 2, NULL); + mKetteiTxtPane = new CPaneMgrAlpha(fileSel.Scr, MULTI_CHAR('w_kete'), 2, NULL); + fileSel.Scr->search(MULTI_CHAR('f_modo'))->hide(); + fileSel.Scr->search(MULTI_CHAR('f_kete'))->hide(); #else - mModoruTxtPane = new CPaneMgrAlpha(fileSel.Scr, 'f_modo', 2, NULL); - mKetteiTxtPane = new CPaneMgrAlpha(fileSel.Scr, 'f_kete', 2, NULL); - fileSel.Scr->search('w_modo')->hide(); - fileSel.Scr->search('w_kete')->hide(); + mModoruTxtPane = new CPaneMgrAlpha(fileSel.Scr, MULTI_CHAR('f_modo'), 2, NULL); + mKetteiTxtPane = new CPaneMgrAlpha(fileSel.Scr, MULTI_CHAR('f_kete'), 2, NULL); + fileSel.Scr->search(MULTI_CHAR('w_modo'))->hide(); + fileSel.Scr->search(MULTI_CHAR('w_kete'))->hide(); #endif ((J2DTextBox*)mModoruTxtPane->getPanePtr())->setFont(fileSel.font[0]); @@ -3031,13 +3031,13 @@ void dFile_select_c::screenSet() { } #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - fileSel.Scr->search('t_for')->hide(); - fileSel.Scr->search('t_for1')->hide(); + fileSel.Scr->search(MULTI_CHAR('t_for'))->hide(); + fileSel.Scr->search(MULTI_CHAR('t_for1'))->hide(); #else - fileSel.Scr->search('w_tabi_s')->hide(); - fileSel.Scr->search('w_tabi_x')->hide(); - fileSel.Scr->search('w_mgn1')->hide(); - fileSel.Scr->search('w_mgn2')->hide(); + fileSel.Scr->search(MULTI_CHAR('w_tabi_s'))->hide(); + fileSel.Scr->search(MULTI_CHAR('w_tabi_x'))->hide(); + fileSel.Scr->search(MULTI_CHAR('w_mgn1'))->hide(); + fileSel.Scr->search(MULTI_CHAR('w_mgn2'))->hide(); #endif for (int i = 0; i < 2; i++) { @@ -3084,17 +3084,17 @@ void dFile_select_c::screenSet() { field_0x0208 = 0; field_0x0209 = 0; - mErrorMsgPane = fileSel.Scr->search('w_er_n'); + mErrorMsgPane = fileSel.Scr->search(MULTI_CHAR('w_er_n')); #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - fileSel.Scr->search('er_for0')->hide(); - fileSel.Scr->search('er_for1')->hide(); + fileSel.Scr->search(MULTI_CHAR('er_for0'))->hide(); + fileSel.Scr->search(MULTI_CHAR('er_for1'))->hide(); #else - fileSel.Scr->search('w_er_msg')->hide(); - fileSel.Scr->search('w_er_msR')->hide(); + fileSel.Scr->search(MULTI_CHAR('w_er_msg'))->hide(); + fileSel.Scr->search(MULTI_CHAR('w_er_msR'))->hide(); #endif - fileSel.Scr->search('w_er_msE')->hide(); + fileSel.Scr->search(MULTI_CHAR('w_er_msE'))->hide(); for (int i = 0; i < 2; i++) { mErrorMsgTxtPane[i] = new CPaneMgrAlpha(fileSel.Scr, l_tagName20[i], 0, NULL); @@ -3131,7 +3131,7 @@ void dFile_select_c::screenSet() { mSelIcon->setPos(vtxCenter.x, vtxCenter.y, mSelFilePanes[mSelectNum]->getPanePtr(), true); mSelIcon->setAlphaRate(0.0f); - J2DPane* basePane = fileSel.Scr->search('Nm_02'); + J2DPane* basePane = fileSel.Scr->search(MULTI_CHAR('Nm_02')); basePane->setAnimation(mBaseMoveAnm); setWakuAnm(); @@ -3160,11 +3160,11 @@ void dFile_select_c::screenSet() { mFileInfoNoDatBasePane[i] = mFileInfo[i]->getNoDatBase(); } - mNameBasePane = fileSel.Scr->search('name_n'); + mNameBasePane = fileSel.Scr->search(MULTI_CHAR('name_n')); mpName = new dName_c(mNameBasePane); field_0x0128 = false; mpFileWarning = new dFile_warning_c(mpArchive, 0); - mSelDt.mpPane = fileSel.Scr->search('w_moyo03'); + mSelDt.mpPane = fileSel.Scr->search(MULTI_CHAR('w_moyo03')); #if PLATFORM_GCN JUtility::TColor black = mDoGph_gInf_c::getFadeColor(); @@ -3173,7 +3173,7 @@ void dFile_select_c::screenSet() { white.a = 0xff; ResTIMG* timg = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti"); - mpFadePict = new J2DPicture('PICT01', JGeometry::TBox2(0.0f, FB_WIDTH, 0.0f, FB_HEIGHT), + mpFadePict = new J2DPicture(MULTI_CHAR('PICT01'), JGeometry::TBox2(0.0f, FB_WIDTH, 0.0f, FB_HEIGHT), timg, NULL); mpFadePict->setBlackWhite(black, white); mpFadePict->setAlpha(0); @@ -3181,20 +3181,20 @@ void dFile_select_c::screenSet() { } void dFile_select_c::screenSetCopySel() { - static u64 l_tagName000[2] = {'w_sel_01', 'w_sel_02'}; - static u64 l_tagName001[2] = {'w_moyo01', 'w_moyo02'}; - static u64 l_tagName002[2] = {'w_gold01', 'w_gold02'}; - static u64 l_tagName003[2] = {'w_go2_01', 'w_go2_02'}; - static u64 l_tagName004[2] = {'w_bk_l01', 'w_bk_l02'}; - static u64 l_tagName005[2] = {'w_cp_ef1', 'w_cp_ef2'}; + static u64 l_tagName000[2] = {MULTI_CHAR('w_sel_01'), MULTI_CHAR('w_sel_02')}; + static u64 l_tagName001[2] = {MULTI_CHAR('w_moyo01'), MULTI_CHAR('w_moyo02')}; + static u64 l_tagName002[2] = {MULTI_CHAR('w_gold01'), MULTI_CHAR('w_gold02')}; + static u64 l_tagName003[2] = {MULTI_CHAR('w_go2_01'), MULTI_CHAR('w_go2_02')}; + static u64 l_tagName004[2] = {MULTI_CHAR('w_bk_l01'), MULTI_CHAR('w_bk_l02')}; + static u64 l_tagName005[2] = {MULTI_CHAR('w_cp_ef1'), MULTI_CHAR('w_cp_ef2')}; mCpSel.Scr = new J2DScreen(); JUT_ASSERT(5286, mCpSel.Scr != NULL); mCpSel.Scr->setPriority("zelda_file_select_copy_select.blo", 0x1100000, mpArchive); dPaneClass_showNullPane(mCpSel.Scr); - mCpSel.mpPane2 = mCpSel.Scr->search('name_n'); - mCpSel.mpPane1 = fileSel.Scr->search('name_n'); + mCpSel.mpPane2 = mCpSel.Scr->search(MULTI_CHAR('name_n')); + mCpSel.mpPane1 = fileSel.Scr->search(MULTI_CHAR('name_n')); void* bck = JKRGetNameResource("zelda_file_select_copy_select.bck", mpArchive); mCpSelBck = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); @@ -3248,7 +3248,7 @@ void dFile_select_c::screenSetCopySel() { mCpSel.Scr->search(l_tagName005[i])->hide(); } - J2DPane* namePane = mCpSel.Scr->search('name_n'); + J2DPane* namePane = mCpSel.Scr->search(MULTI_CHAR('name_n')); namePane->setAnimation(mCpSelBck); mCpSelBck->setFrame(0.0f); namePane->animationTransform(); @@ -3270,15 +3270,15 @@ void dFile_select_c::screenSetCopySel() { } void dFile_select_c::screenSetYesNo() { - static u64 l_tagName012[2] = {'w_no_n', 'w_yes_n'}; - static u64 l_tagName013[2] = {'w_no_t', 'w_yes_t'}; - static u64 l_tagName013U[2] = {'f_no_t', 'f_yes_t'}; - static u64 l_tagName9[2] = {'w_no_m', 'w_yes_m'}; + static u64 l_tagName012[2] = {MULTI_CHAR('w_no_n'), MULTI_CHAR('w_yes_n')}; + static u64 l_tagName013[2] = {MULTI_CHAR('w_no_t'), MULTI_CHAR('w_yes_t')}; + static u64 l_tagName013U[2] = {MULTI_CHAR('f_no_t'), MULTI_CHAR('f_yes_t')}; + static u64 l_tagName9[2] = {MULTI_CHAR('w_no_m'), MULTI_CHAR('w_yes_m')}; static u64 l_tagName10[2] = { - 'w_no_g', - 'w_yes_g', + MULTI_CHAR('w_no_g'), + MULTI_CHAR('w_yes_g'), }; - static u64 l_tagName11[2] = {'w_no_gr', 'w_yes_gr'}; + static u64 l_tagName11[2] = {MULTI_CHAR('w_no_gr'), MULTI_CHAR('w_yes_gr')}; static u8 l_msgNum2[2] = {0x08, 0x07}; mYnSel.ScrYn = new J2DScreen(); @@ -3336,12 +3336,12 @@ void dFile_select_c::screenSetYesNo() { } void dFile_select_c::screenSet3Menu() { - static u64 l_tagName6[3] = {'w_sat_mo', 'w_del_mo', 'w_cop_mo'}; - static u64 l_tagName7[3] = {'w_sat_g', 'w_del_g', 'w_cop_g'}; - static u64 l_tagName8[3] = {'w_sat_gr', 'w_del_gr', 'w_cop_gr'}; - static u64 l_tagName1[3] = {'w_sta_n', 'w_del_n', 'w_cop_n'}; - static u64 l_tagName011[3] = {'w_sta', 'w_del', 'w_cop_t'}; - static u64 l_tagName011U[3] = {'f_sta', 'f_del', 'f_cop_t'}; + static u64 l_tagName6[3] = {MULTI_CHAR('w_sat_mo'), MULTI_CHAR('w_del_mo'), MULTI_CHAR('w_cop_mo')}; + static u64 l_tagName7[3] = {MULTI_CHAR('w_sat_g'), MULTI_CHAR('w_del_g'), MULTI_CHAR('w_cop_g')}; + static u64 l_tagName8[3] = {MULTI_CHAR('w_sat_gr'), MULTI_CHAR('w_del_gr'), MULTI_CHAR('w_cop_gr')}; + static u64 l_tagName1[3] = {MULTI_CHAR('w_sta_n'), MULTI_CHAR('w_del_n'), MULTI_CHAR('w_cop_n')}; + static u64 l_tagName011[3] = {MULTI_CHAR('w_sta'), MULTI_CHAR('w_del'), MULTI_CHAR('w_cop_t')}; + static u64 l_tagName011U[3] = {MULTI_CHAR('f_sta'), MULTI_CHAR('f_del'), MULTI_CHAR('f_cop_t')}; static u8 l_msgNum[3] = {0x57, 0x58, 0x56}; m3mSel.Scr3m = new J2DScreen(); @@ -3367,7 +3367,7 @@ void dFile_select_c::screenSet3Menu() { m3mBtk->searchUpdateMaterialID(m3mSel.Scr3m); m3mBtkFrame = 0; - m3mMenuPane = m3mSel.Scr3m->search('wmenu_n'); + m3mMenuPane = m3mSel.Scr3m->search(MULTI_CHAR('wmenu_n')); m3mMenuPane->setAnimation(m3mBck); m3mBck->setFrame(799.0f); m3mMenuPane->animationTransform(); @@ -3411,13 +3411,13 @@ void dFile_select_c::screenSetDetail() { mSelDt.ScrDt->setAnimation(mSelDtBtk); mSelDtBtkFrame = 0; - mSelDt.mpPane2 = mSelDt.ScrDt->search('n_all'); - mSelDtPane_mset = new CPaneMgr(mSelDt.ScrDt, 'mset_p_n', 0, NULL); + mSelDt.mpPane2 = mSelDt.ScrDt->search(MULTI_CHAR('n_all')); + mSelDtPane_mset = new CPaneMgr(mSelDt.ScrDt, MULTI_CHAR('mset_p_n'), 0, NULL); mpFileSelect3d->setBasePane(mSelDtPane_mset); - mpFileSelect3d->setBase2Pane(fileSel.Scr->search('w_sub_n')); + mpFileSelect3d->setBase2Pane(fileSel.Scr->search(MULTI_CHAR('w_sub_n'))); - mSelDt.ScrDt->search('d_win_n')->setUserInfo('n_43'); + mSelDt.ScrDt->search(MULTI_CHAR('d_win_n'))->setUserInfo('n_43'); } void dFile_select_c::setWakuAnm() { diff --git a/src/d/d_gameover.cpp b/src/d/d_gameover.cpp index 4bf16c7e42..b5b6485be2 100644 --- a/src/d/d_gameover.cpp +++ b/src/d/d_gameover.cpp @@ -368,14 +368,14 @@ dDlst_GameOverScrnDraw_c::dDlst_GameOverScrnDraw_c(JKRArchive* i_archive) { mFadeColor.set(0, 0, 0, 0); if (dMeter2Info_getGameOverType() != 0) { - mpScreen->search('n_base')->hide(); + mpScreen->search(MULTI_CHAR('n_base'))->hide(); if (mDoGph_gInf_c::getFadeRate() == 1.0f) { mFadeColor = mDoGph_gInf_c::getFadeColor(); } } - mpScreen->search('base_b')->hide(); + mpScreen->search(MULTI_CHAR('base_b'))->hide(); JUtility::TColor img_white(mFadeColor); JUtility::TColor img_black(mFadeColor); @@ -384,10 +384,10 @@ dDlst_GameOverScrnDraw_c::dDlst_GameOverScrnDraw_c(JKRArchive* i_archive) { ResTIMG* img = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti"); mpBackImg = - new J2DPicture('PICT01', JGeometry::TBox2(0.0f, 486.0f, 0.0f, 660.0f), img, NULL); + new J2DPicture(MULTI_CHAR('PICT01'), JGeometry::TBox2(0.0f, 486.0f, 0.0f, 660.0f), img, NULL); mpBackImg->setBlackWhite(img_white, img_black); - J2DTextBox* gold_tbox = (J2DTextBox*)mpScreen->search('gold_00'); + J2DTextBox* gold_tbox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('gold_00')); gold_tbox->setFont(mDoExt_getSubFont()); char string[64]; diff --git a/src/d/d_insect.cpp b/src/d/d_insect.cpp index f69e648c67..bed8ca1ed6 100644 --- a/src/d/d_insect.cpp +++ b/src/d/d_insect.cpp @@ -98,8 +98,8 @@ void dInsect_c::CalcZBuffer(f32 param_0) { field_0x578 = 0; } - f32 view_near = dComIfGd_getView()->near; - f32 view_far = dComIfGd_getView()->far; + f32 view_near = dComIfGd_getView()->near_; + f32 view_far = dComIfGd_getView()->far_; mDoLib_pos2camera(&pos, &pos_projected); pos_projected.z += param_0; diff --git a/src/d/d_kankyo.cpp b/src/d/d_kankyo.cpp index 429a8bd5ae..028e2d6229 100644 --- a/src/d/d_kankyo.cpp +++ b/src/d/d_kankyo.cpp @@ -4398,8 +4398,8 @@ static void setLightTevColorType_MAJI_sub(J3DMaterial* material_p, dKy_tevstr_c* fog_info->mEndZ = tevstr_p->mFogEndZ; if (dComIfGd_getView() != NULL) { - fog_info->mNearZ = dComIfGd_getView()->near; - fog_info->mFarZ = dComIfGd_getView()->far; + fog_info->mNearZ = dComIfGd_getView()->near_; + fog_info->mFarZ = dComIfGd_getView()->far_; } if (fog_info->mType == 7) { @@ -9326,10 +9326,10 @@ static void GxFogSet_Sub(GXColor* fog_col_p) { color = *fog_col_p; if (dComIfGd_getView() != NULL) { - if (dComIfGd_getView()->near >= 0.0f && dComIfGd_getView()->far >= 0.0f) { - if (dComIfGd_getView()->near < dComIfGd_getView()->far) { - near_z = dComIfGd_getView()->near; - far_z = dComIfGd_getView()->far; + if (dComIfGd_getView()->near_ >= 0.0f && dComIfGd_getView()->far_ >= 0.0f) { + if (dComIfGd_getView()->near_ < dComIfGd_getView()->far_) { + near_z = dComIfGd_getView()->near_; + far_z = dComIfGd_getView()->far_; } } } @@ -9361,10 +9361,10 @@ void dKy_GxFog_tevstr_set(dKy_tevstr_c* tevstr_p) { color.b = tevstr_p->FogCol.b; if (dComIfGd_getView() != NULL) { - if (dComIfGd_getView()->near >= 0.0f && dComIfGd_getView()->far >= 0.0f) { - if (dComIfGd_getView()->near < dComIfGd_getView()->far) { - near_z = dComIfGd_getView()->near; - far_z = dComIfGd_getView()->far; + if (dComIfGd_getView()->near_ >= 0.0f && dComIfGd_getView()->far_ >= 0.0f) { + if (dComIfGd_getView()->near_ < dComIfGd_getView()->far_) { + near_z = dComIfGd_getView()->near_; + far_z = dComIfGd_getView()->far_; } } } @@ -9383,10 +9383,10 @@ void dKy_GfFog_tevstr_set(dKy_tevstr_c* tevstr_p) { color.b = tevstr_p->FogCol.b; if (dComIfGd_getView() != NULL) { - if (dComIfGd_getView()->near >= 0.0f && dComIfGd_getView()->far >= 0.0f) { - if (dComIfGd_getView()->near < dComIfGd_getView()->far) { - near_z = dComIfGd_getView()->near; - far_z = dComIfGd_getView()->far; + if (dComIfGd_getView()->near_ >= 0.0f && dComIfGd_getView()->far_ >= 0.0f) { + if (dComIfGd_getView()->near_ < dComIfGd_getView()->far_) { + near_z = dComIfGd_getView()->near_; + far_z = dComIfGd_getView()->far_; } } } diff --git a/src/d/d_kantera_icon_meter.cpp b/src/d/d_kantera_icon_meter.cpp index 431c4c0d30..fa31a962ea 100644 --- a/src/d/d_kantera_icon_meter.cpp +++ b/src/d/d_kantera_icon_meter.cpp @@ -31,9 +31,9 @@ void dKantera_icon_c::initiate() { dPaneClass_showNullPane(scrn); mpKanteraIcon->setScreen(scrn); - mpParent = new CPaneMgr(scrn, 'kan_m_n', 2, NULL); + mpParent = new CPaneMgr(scrn, MULTI_CHAR('kan_m_n'), 2, NULL); - mpGauge = new CPaneMgr(scrn, 'yellow_m', 0, NULL); + mpGauge = new CPaneMgr(scrn, MULTI_CHAR('yellow_m'), 0, NULL); } void dKantera_icon_c::setAlphaRate(f32 alphaRate) { diff --git a/src/d/d_map.cpp b/src/d/d_map.cpp index 6678e6d9af..1cc6a4dfb4 100644 --- a/src/d/d_map.cpp +++ b/src/d/d_map.cpp @@ -694,14 +694,16 @@ GXColor* renderingAmap_c::getLineColor(int param_0, int param_1) { if (param_1 == 4) { switch (field_0x3c) { - case 0: + case 0: { static const GXColor borderColor0 = {0xB4, 0x00, 0x00, 0x00}; *color = borderColor0; break; - case 1: + } + case 1: { static const GXColor borderColor1 = {0xB8, 0x00, 0x00, 0x00}; *color = borderColor1; break; + } default: JUT_ASSERT(1636, FALSE); break; diff --git a/src/d/d_menu_collect.cpp b/src/d/d_menu_collect.cpp index 6ff1a50c7f..acf6408a6d 100644 --- a/src/d/d_menu_collect.cpp +++ b/src/d/d_menu_collect.cpp @@ -254,25 +254,25 @@ static u8 const lit_3778[12] = { }; void dMenu_Collect2D_c::screenSet() { - static const u64 text_sv[3] = {'sav_0', 'sav_1', 'sav_2'}; - static const u64 text_op[3] = {'opt_0', 'opt_1', 'opt_2',}; - static const u64 ftext_sv[3] = {'f_sav_0', 'f_sav_1', 'f_sav_2'}; - static const u64 ftext_op[3] = {'f_opt_0', 'f_opt_1', 'f_opt_2'}; - static const u64 text_a_tag[5] = {'atext1_1', 'atext1_2', 'atext1_3', 'atext1_4', 'atext1_5'}; - static const u64 text_b_tag[5] = {'btext1_1', 'btext1_2', 'btext1_3', 'btext1_4', 'btext1_5'}; + static const u64 text_sv[3] = {MULTI_CHAR('sav_0'), MULTI_CHAR('sav_1'), MULTI_CHAR('sav_2')}; + static const u64 text_op[3] = {MULTI_CHAR('opt_0'), MULTI_CHAR('opt_1'), MULTI_CHAR('opt_2'),}; + static const u64 ftext_sv[3] = {MULTI_CHAR('f_sav_0'), MULTI_CHAR('f_sav_1'), MULTI_CHAR('f_sav_2')}; + static const u64 ftext_op[3] = {MULTI_CHAR('f_opt_0'), MULTI_CHAR('f_opt_1'), MULTI_CHAR('f_opt_2')}; + static const u64 text_a_tag[5] = {MULTI_CHAR('atext1_1'), MULTI_CHAR('atext1_2'), MULTI_CHAR('atext1_3'), MULTI_CHAR('atext1_4'), MULTI_CHAR('atext1_5')}; + static const u64 text_b_tag[5] = {MULTI_CHAR('btext1_1'), MULTI_CHAR('btext1_2'), MULTI_CHAR('btext1_3'), MULTI_CHAR('btext1_4'), MULTI_CHAR('btext1_5')}; #if REGION_JPN - static_cast(mpScreen->search('t_t00'))->setFont(mDoExt_getRubyFont()); - static_cast(mpScreen->search('t_t00'))->setString(0x20, ""); + static_cast(mpScreen->search(MULTI_CHAR('t_t00')))->setFont(mDoExt_getRubyFont()); + static_cast(mpScreen->search(MULTI_CHAR('t_t00')))->setString(0x20, ""); dMeter2Info_getStringKanji( - 0x3E1, static_cast(mpScreen->search('t_t00'))->getStringPtr(), NULL); - mpScreen->search('f_t00')->hide(); + 0x3E1, static_cast(mpScreen->search(MULTI_CHAR('t_t00')))->getStringPtr(), NULL); + mpScreen->search(MULTI_CHAR('f_t00'))->hide(); #else - static_cast(mpScreen->search('f_t00'))->setFont(mDoExt_getRubyFont()); - static_cast(mpScreen->search('f_t00'))->setString(0x20, ""); + static_cast(mpScreen->search(MULTI_CHAR('f_t00')))->setFont(mDoExt_getRubyFont()); + static_cast(mpScreen->search(MULTI_CHAR('f_t00')))->setString(0x20, ""); dMeter2Info_getStringKanji( - 0x3E1, static_cast(mpScreen->search('f_t00'))->getStringPtr(), NULL); - mpScreen->search('t_t00')->hide(); + 0x3E1, static_cast(mpScreen->search(MULTI_CHAR('f_t00')))->getStringPtr(), NULL); + mpScreen->search(MULTI_CHAR('t_t00'))->hide(); #endif for (int i = 0; i < 3; i++) { @@ -311,45 +311,45 @@ void dMenu_Collect2D_c::screenSet() { } #if REGION_JPN - static_cast(mpScreen->search('item_n00'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('item_n01'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('item_n02'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('item_n03'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('item_n00'))->setString(0x20, ""); - static_cast(mpScreen->search('item_n01'))->setString(0x20, ""); - static_cast(mpScreen->search('item_n02'))->setString(0x20, ""); - static_cast(mpScreen->search('item_n03'))->setString(0x20, ""); - static_cast(mpScreen->search('i_text1'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('i_text0'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('i_text1'))->setString(0x100, ""); - static_cast(mpScreen->search('i_text0'))->setString(0x100, ""); + static_cast(mpScreen->search(MULTI_CHAR('item_n00')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('item_n01')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('item_n02')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('item_n03')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('item_n00')))->setString(0x20, ""); + static_cast(mpScreen->search(MULTI_CHAR('item_n01')))->setString(0x20, ""); + static_cast(mpScreen->search(MULTI_CHAR('item_n02')))->setString(0x20, ""); + static_cast(mpScreen->search(MULTI_CHAR('item_n03')))->setString(0x20, ""); + static_cast(mpScreen->search(MULTI_CHAR('i_text1')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('i_text0')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('i_text1')))->setString(0x100, ""); + static_cast(mpScreen->search(MULTI_CHAR('i_text0')))->setString(0x100, ""); - mpScreen->search('item_n04')->hide(); - mpScreen->search('item_n05')->hide(); - mpScreen->search('item_n06')->hide(); - mpScreen->search('item_n07')->hide(); - mpScreen->search('f_text1')->hide(); - mpScreen->search('f_text0')->hide(); + mpScreen->search(MULTI_CHAR('item_n04'))->hide(); + mpScreen->search(MULTI_CHAR('item_n05'))->hide(); + mpScreen->search(MULTI_CHAR('item_n06'))->hide(); + mpScreen->search(MULTI_CHAR('item_n07'))->hide(); + mpScreen->search(MULTI_CHAR('f_text1'))->hide(); + mpScreen->search(MULTI_CHAR('f_text0'))->hide(); #else - static_cast(mpScreen->search('item_n04'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('item_n05'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('item_n06'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('item_n07'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('item_n04'))->setString(0x20, ""); - static_cast(mpScreen->search('item_n05'))->setString(0x20, ""); - static_cast(mpScreen->search('item_n06'))->setString(0x20, ""); - static_cast(mpScreen->search('item_n07'))->setString(0x20, ""); - static_cast(mpScreen->search('f_text1'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('f_text0'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('f_text1'))->setString(0x100, ""); - static_cast(mpScreen->search('f_text0'))->setString(0x100, ""); + static_cast(mpScreen->search(MULTI_CHAR('item_n04')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('item_n05')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('item_n06')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('item_n07')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('item_n04')))->setString(0x20, ""); + static_cast(mpScreen->search(MULTI_CHAR('item_n05')))->setString(0x20, ""); + static_cast(mpScreen->search(MULTI_CHAR('item_n06')))->setString(0x20, ""); + static_cast(mpScreen->search(MULTI_CHAR('item_n07')))->setString(0x20, ""); + static_cast(mpScreen->search(MULTI_CHAR('f_text1')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('f_text0')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('f_text1')))->setString(0x100, ""); + static_cast(mpScreen->search(MULTI_CHAR('f_text0')))->setString(0x100, ""); - mpScreen->search('item_n00')->hide(); - mpScreen->search('item_n01')->hide(); - mpScreen->search('item_n02')->hide(); - mpScreen->search('item_n03')->hide(); - mpScreen->search('i_text1')->hide(); - mpScreen->search('i_text0')->hide(); + mpScreen->search(MULTI_CHAR('item_n00'))->hide(); + mpScreen->search(MULTI_CHAR('item_n01'))->hide(); + mpScreen->search(MULTI_CHAR('item_n02'))->hide(); + mpScreen->search(MULTI_CHAR('item_n03'))->hide(); + mpScreen->search(MULTI_CHAR('i_text1'))->hide(); + mpScreen->search(MULTI_CHAR('i_text0'))->hide(); #endif field_0x22d[0][0] = 0; @@ -364,13 +364,13 @@ void dMenu_Collect2D_c::screenSet() { if (field_0x22d[3][0] != 0) { if (dComIfGs_isItemFirstBit(0x28)) { - mpScreen->search('ken_00')->hide(); - mpScreen->search('ken_01')->show(); + mpScreen->search(MULTI_CHAR('ken_00'))->hide(); + mpScreen->search(MULTI_CHAR('ken_01'))->show(); } else if (dComIfGs_isItemFirstBit(0x3F) /* dSv_event_flag_c::F_0026 - Ordon Village - gave wooden sword to talo on 3rd day */ && !dComIfGs_isEventBit(0x302)) { - mpScreen->search('ken_00')->show(); - mpScreen->search('ken_01')->hide(); + mpScreen->search(MULTI_CHAR('ken_00'))->show(); + mpScreen->search(MULTI_CHAR('ken_01'))->hide(); } } @@ -390,11 +390,11 @@ void dMenu_Collect2D_c::screenSet() { dComIfGs_isItemFirstBit(0x2B) || dComIfGs_isItemFirstBit(0x2A) ? true : false; if (field_0x22d[3][1] != 0) { if (dComIfGs_isItemFirstBit(0x2B)) { - mpScreen->search('tate_00')->show(); - mpScreen->search('tate_01')->hide(); + mpScreen->search(MULTI_CHAR('tate_00'))->show(); + mpScreen->search(MULTI_CHAR('tate_01'))->hide(); } else if (dComIfGs_isItemFirstBit(0x2A)) { - mpScreen->search('tate_00')->hide(); - mpScreen->search('tate_01')->show(); + mpScreen->search(MULTI_CHAR('tate_00'))->hide(); + mpScreen->search(MULTI_CHAR('tate_01'))->show(); } } field_0x22d[4][1] = dComIfGs_isItemFirstBit(0x2C); @@ -661,14 +661,14 @@ void dMenu_Collect2D_c::screenSet() { mCursorX = i_copy; mCursorY = j_copy; } - mpLinkPm = new CPaneMgr(mpScreen, 'linki_n', 0, NULL); + mpLinkPm = new CPaneMgr(mpScreen, MULTI_CHAR('linki_n'), 0, NULL); mLinkGlobalCenterPos.x = mpLinkPm->getInitGlobalCenterPosX(); mLinkGlobalCenterPos.y = mpLinkPm->getInitGlobalCenterPosY(); mLinkGlobalCenterPos.z = -1000.0f; - mpMaskPm = new CPaneMgr(mpScreen, 'kamen_n', 0, NULL); - mpModelBg = new CPaneMgr(mpScreen, 'modelbgn', 2, NULL); - mpHeartParent = new CPaneMgr(mpScreen, 'heart_n', 0, NULL); - mpHeartPiece = new CPaneMgr(mpScreen, 'heart_kn', 0, NULL); + mpMaskPm = new CPaneMgr(mpScreen, MULTI_CHAR('kamen_n'), 0, NULL); + mpModelBg = new CPaneMgr(mpScreen, MULTI_CHAR('modelbgn'), 2, NULL); + mpHeartParent = new CPaneMgr(mpScreen, MULTI_CHAR('heart_n'), 0, NULL); + mpHeartPiece = new CPaneMgr(mpScreen, MULTI_CHAR('heart_kn'), 0, NULL); setAButtonString(mCurrentAString); setBButtonString(mCurrentBString); setItemNameString(mCursorX, mCursorY); @@ -701,12 +701,12 @@ void dMenu_Collect2D_c::btkAnimeLoop0(J2DAnmTextureSRTKey* i_SRTKey) { } else { mFrame = 0.0f; } - static_cast(mpScreen->search('modelbg0'))->setAnimation(i_SRTKey); - static_cast(mpScreen->search('modelbg1'))->setAnimation(i_SRTKey); - static_cast(mpScreen->search('modelbg2'))->setAnimation(i_SRTKey); - static_cast(mpScreen->search('modelbg3'))->setAnimation(i_SRTKey); - static_cast(mpScreen->search('modelbg4'))->setAnimation(i_SRTKey); - static_cast(mpScreen->search('modelbg5'))->setAnimation(i_SRTKey); + static_cast(mpScreen->search(MULTI_CHAR('modelbg0')))->setAnimation(i_SRTKey); + static_cast(mpScreen->search(MULTI_CHAR('modelbg1')))->setAnimation(i_SRTKey); + static_cast(mpScreen->search(MULTI_CHAR('modelbg2')))->setAnimation(i_SRTKey); + static_cast(mpScreen->search(MULTI_CHAR('modelbg3')))->setAnimation(i_SRTKey); + static_cast(mpScreen->search(MULTI_CHAR('modelbg4')))->setAnimation(i_SRTKey); + static_cast(mpScreen->search(MULTI_CHAR('modelbg5')))->setAnimation(i_SRTKey); } void dMenu_Collect2D_c::setBackAlpha() { @@ -1125,24 +1125,24 @@ void dMenu_Collect2D_c::changeClothe() { void dMenu_Collect2D_c::setArrowMaxNum(u8 param_0) { switch (param_0) { case 0: - mpScreen->search('item_0_0')->hide(); - mpScreen->search('item_0_1')->hide(); - mpScreen->search('item_0_2')->hide(); + mpScreen->search(MULTI_CHAR('item_0_0'))->hide(); + mpScreen->search(MULTI_CHAR('item_0_1'))->hide(); + mpScreen->search(MULTI_CHAR('item_0_2'))->hide(); break; case 30: - mpScreen->search('item_0_0')->show(); - mpScreen->search('item_0_1')->hide(); - mpScreen->search('item_0_2')->hide(); + mpScreen->search(MULTI_CHAR('item_0_0'))->show(); + mpScreen->search(MULTI_CHAR('item_0_1'))->hide(); + mpScreen->search(MULTI_CHAR('item_0_2'))->hide(); break; case 60: - mpScreen->search('item_0_0')->hide(); - mpScreen->search('item_0_1')->show(); - mpScreen->search('item_0_2')->hide(); + mpScreen->search(MULTI_CHAR('item_0_0'))->hide(); + mpScreen->search(MULTI_CHAR('item_0_1'))->show(); + mpScreen->search(MULTI_CHAR('item_0_2'))->hide(); break; case 100: - mpScreen->search('item_0_0')->hide(); - mpScreen->search('item_0_1')->hide(); - mpScreen->search('item_0_2')->show(); + mpScreen->search(MULTI_CHAR('item_0_0'))->hide(); + mpScreen->search(MULTI_CHAR('item_0_1'))->hide(); + mpScreen->search(MULTI_CHAR('item_0_2'))->show(); break; } } @@ -1150,26 +1150,26 @@ void dMenu_Collect2D_c::setArrowMaxNum(u8 param_0) { void dMenu_Collect2D_c::setWalletMaxNum(u16 i_walletSize) { switch (i_walletSize) { case 300: - mpScreen->search('item_1_0')->show(); - mpScreen->search('item_1_1')->hide(); - mpScreen->search('item_1_2')->hide(); + mpScreen->search(MULTI_CHAR('item_1_0'))->show(); + mpScreen->search(MULTI_CHAR('item_1_1'))->hide(); + mpScreen->search(MULTI_CHAR('item_1_2'))->hide(); break; case 600: - mpScreen->search('item_1_0')->hide(); - mpScreen->search('item_1_1')->show(); - mpScreen->search('item_1_2')->hide(); + mpScreen->search(MULTI_CHAR('item_1_0'))->hide(); + mpScreen->search(MULTI_CHAR('item_1_1'))->show(); + mpScreen->search(MULTI_CHAR('item_1_2'))->hide(); break; case 1000: - mpScreen->search('item_1_0')->hide(); - mpScreen->search('item_1_1')->hide(); - mpScreen->search('item_1_2')->show(); + mpScreen->search(MULTI_CHAR('item_1_0'))->hide(); + mpScreen->search(MULTI_CHAR('item_1_1'))->hide(); + mpScreen->search(MULTI_CHAR('item_1_2'))->show(); break; } } void dMenu_Collect2D_c::setSmellType() { static const u64 smell_tag[5] = { - 'wolf_med', 'wolf_chi', 'wolf_fis', 'wolf_iri', 'wolf_pou', + MULTI_CHAR('wolf_med'), MULTI_CHAR('wolf_chi'), MULTI_CHAR('wolf_fis'), MULTI_CHAR('wolf_iri'), MULTI_CHAR('wolf_pou'), }; s32 smellType = -1; switch (dComIfGs_getCollectSmell()) { @@ -1200,10 +1200,10 @@ void dMenu_Collect2D_c::setSmellType() { void dMenu_Collect2D_c::setHeartPiece() { static const u64 heart_tag[4] = { - 'heart_1n', - 'heart_2n', - 'heart_3n', - 'heart_4n', + MULTI_CHAR('heart_1n'), + MULTI_CHAR('heart_2n'), + MULTI_CHAR('heart_3n'), + MULTI_CHAR('heart_4n'), }; s32 life = dComIfGs_getMaxLife() % 5; for (int i = 0; i < MAX_VISIBLE_HEARTPIECES; i++) { @@ -1227,10 +1227,10 @@ void dMenu_Collect2D_c::setPohMaxNum(u8 i_pohNum) { JKRArchive* archive = dComIfGp_getMain2DArchive(); const char* textureName = dMeter2Info_getNumberTextureName(div); ResTIMG* timg = (ResTIMG*)archive->getResource('TIMG', textureName); - static_cast(mpScreen->search('item2_3'))->changeTexture(timg, 0); + static_cast(mpScreen->search(MULTI_CHAR('item2_3')))->changeTexture(timg, 0); check = 1; } else { - mpScreen->search('item2_3')->hide(); + mpScreen->search(MULTI_CHAR('item2_3'))->hide(); } div = index / 10; index = index % 10; @@ -1238,25 +1238,25 @@ void dMenu_Collect2D_c::setPohMaxNum(u8 i_pohNum) { JKRArchive* archive = dComIfGp_getMain2DArchive(); const char* textureName2 = dMeter2Info_getNumberTextureName(div); ResTIMG* timg2 = (ResTIMG*)archive->getResource('TIMG', textureName2); - static_cast(mpScreen->search('item2_2'))->changeTexture(timg2, 0); + static_cast(mpScreen->search(MULTI_CHAR('item2_2')))->changeTexture(timg2, 0); } else { - mpScreen->search('item2_2')->hide(); + mpScreen->search(MULTI_CHAR('item2_2'))->hide(); } JKRArchive* archive = dComIfGp_getMain2DArchive(); const char* textureName3 = dMeter2Info_getNumberTextureName(index); ResTIMG* timg3 = (ResTIMG*)archive->getResource('TIMG', textureName3); - static_cast(mpScreen->search('item2_1'))->changeTexture(timg3, 0); + static_cast(mpScreen->search(MULTI_CHAR('item2_1')))->changeTexture(timg3, 0); } else { - mpScreen->search('item2_3')->hide(); - mpScreen->search('item2_2')->hide(); - mpScreen->search('item2_1')->hide(); + mpScreen->search(MULTI_CHAR('item2_3'))->hide(); + mpScreen->search(MULTI_CHAR('item2_2'))->hide(); + mpScreen->search(MULTI_CHAR('item2_1'))->hide(); } } void dMenu_Collect2D_c::setEquipItemFrameColorSword(int i_frame) { static const u64 tag[2] = { - 'ken_g_0', - 'ken_g_1', + MULTI_CHAR('ken_g_0'), + MULTI_CHAR('ken_g_1'), }; if (i_frame == -1) { @@ -1312,8 +1312,8 @@ void dMenu_Collect2D_c::setEquipItemFrameColorSword(int i_frame) { void dMenu_Collect2D_c::setEquipItemFrameColorShield(int i_frame) { static const u64 tag[2] = { - 'tate_g_0', - 'tate_g_1', + MULTI_CHAR('tate_g_0'), + MULTI_CHAR('tate_g_1'), }; if (i_frame == -1) { @@ -1360,9 +1360,9 @@ void dMenu_Collect2D_c::setEquipItemFrameColorShield(int i_frame) { void dMenu_Collect2D_c::setEquipItemFrameColorClothes(int i_frame) { static const u64 tag[3] = { - 'fuku_g_0', - 'fuku_g_1', - 'fuku_g_2', + MULTI_CHAR('fuku_g_0'), + MULTI_CHAR('fuku_g_1'), + MULTI_CHAR('fuku_g_2'), }; if (i_frame == -1) { @@ -1412,7 +1412,7 @@ void dMenu_Collect2D_c::setEquipItemFrameColorClothes(int i_frame) { void dMenu_Collect2D_c::setHIO(bool i_useHIO) { static const u64 kaz_n[9] = { - 'uzu_00', 'uzu_01', 'uzu_02', 'uzu_03', 'uzu_04', 'uzu_05', 'uzu_06', 'uzu_07', 'hishi', + MULTI_CHAR('uzu_00'), MULTI_CHAR('uzu_01'), MULTI_CHAR('uzu_02'), MULTI_CHAR('uzu_03'), MULTI_CHAR('uzu_04'), MULTI_CHAR('uzu_05'), MULTI_CHAR('uzu_06'), MULTI_CHAR('uzu_07'), MULTI_CHAR('hishi'), }; if (mBlueSmokePosX != g_drawHIO.mCollectScreen.mBlueSmokePosX || @@ -1460,7 +1460,7 @@ void dMenu_Collect2D_c::setHIO(bool i_useHIO) { } if (g_drawHIO.mCollectScreen.mColorDebugON) { - J2DPicture* basePicture = (J2DPicture*)mpScreen->search('nht_base'); + J2DPicture* basePicture = (J2DPicture*)mpScreen->search(MULTI_CHAR('nht_base')); basePicture->setBlackWhite(g_drawHIO.mCollectScreen.mVesselBack[0], g_drawHIO.mCollectScreen.mVesselFront[0]); @@ -1501,29 +1501,29 @@ void dMenu_Collect2D_c::setHIO(bool i_useHIO) { u64 dMenu_Collect2D_c::getItemTag(int i_tag1, int i_tag2, bool param_3) { static const u64 itemTag[6][7] = { - {0, 0, 0, 'ken_n0', 'ken_n1', 'heart_kn', 'kamen_n'}, - {0, 0, 0, 'tate_n0', 'tate_n1'}, + {0, 0, 0, MULTI_CHAR('ken_n0'), MULTI_CHAR('ken_n1'), MULTI_CHAR('heart_kn'), MULTI_CHAR('kamen_n')}, + {0, 0, 0, MULTI_CHAR('tate_n0'), MULTI_CHAR('tate_n1')}, { 0, 0, 0, - 'fuku_n0', - 'fuku_n1', - 'fuku_n2', + MULTI_CHAR('fuku_n0'), + MULTI_CHAR('fuku_n1'), + MULTI_CHAR('fuku_n2'), }, { - 'item_1_n', - 'item_0_n', - 'kabu_6n', - 'maki_5_n', + MULTI_CHAR('item_1_n'), + MULTI_CHAR('item_0_n'), + MULTI_CHAR('kabu_6n'), + MULTI_CHAR('maki_5_n'), }, { - 'wolf_n', - 'item_2_n', - 'fish_3_n', - 'lett_4_n', + MULTI_CHAR('wolf_n'), + MULTI_CHAR('item_2_n'), + MULTI_CHAR('fish_3_n'), + MULTI_CHAR('lett_4_n'), }, - {'save_n', 'option_n'}, + {MULTI_CHAR('save_n'), MULTI_CHAR('option_n')}, }; if (i_tag2 == 5 && !param_3) { @@ -2033,37 +2033,37 @@ void dMenu_Collect2D_c::_draw() { if (mItemNameString == 0) { #if REGION_JPN - char* stringPtr1 = static_cast(mpScreen->search('i_text1'))->getStringPtr(); + char* stringPtr1 = static_cast(mpScreen->search(MULTI_CHAR('i_text1')))->getStringPtr(); #else - char* stringPtr1 = static_cast(mpScreen->search('f_text1'))->getStringPtr(); + char* stringPtr1 = static_cast(mpScreen->search(MULTI_CHAR('f_text1')))->getStringPtr(); #endif strcpy(stringPtr1, ""); #if REGION_JPN - char* stringPtr0 = static_cast(mpScreen->search('i_text0'))->getStringPtr(); + char* stringPtr0 = static_cast(mpScreen->search(MULTI_CHAR('i_text0')))->getStringPtr(); #else - char* stringPtr0 = static_cast(mpScreen->search('f_text0'))->getStringPtr(); + char* stringPtr0 = static_cast(mpScreen->search(MULTI_CHAR('f_text0')))->getStringPtr(); #endif strcpy(stringPtr0, ""); } else { #if REGION_JPN - J2DTextBox* textBox1 = static_cast(mpScreen->search('i_text1')); + J2DTextBox* textBox1 = static_cast(mpScreen->search(MULTI_CHAR('i_text1'))); #else - J2DTextBox* textBox1 = static_cast(mpScreen->search('f_text1')); + J2DTextBox* textBox1 = static_cast(mpScreen->search(MULTI_CHAR('f_text1'))); #endif mpString->getString(mItemNameString, textBox1, NULL, NULL, NULL, 0); #if REGION_JPN - J2DTextBox* textBox0 = static_cast(mpScreen->search('i_text0')); + J2DTextBox* textBox0 = static_cast(mpScreen->search(MULTI_CHAR('i_text0'))); #else - J2DTextBox* textBox0 = static_cast(mpScreen->search('f_text0')); + J2DTextBox* textBox0 = static_cast(mpScreen->search(MULTI_CHAR('f_text0'))); #endif mpString->getString(mItemNameString, textBox0, NULL, NULL, NULL, 0); #if REGION_JPN - textBox0 = static_cast(mpScreen->search('i_text0')); + textBox0 = static_cast(mpScreen->search(MULTI_CHAR('i_text0'))); #else - textBox0 = static_cast(mpScreen->search('f_text0')); + textBox0 = static_cast(mpScreen->search(MULTI_CHAR('f_text0'))); #endif mpString->drawOutFontLocal(textBox0, -1.0f); } @@ -2087,7 +2087,7 @@ bool dMenu_Collect2D_c::isOutCheck() { void dMenu_Collect2D_c::setAButtonString(u16 i_stringID) { static const u64 text_a_tag[5] = { - 'atext1_1', 'atext1_2', 'atext1_3', 'atext1_4', 'atext1_5', + MULTI_CHAR('atext1_1'), MULTI_CHAR('atext1_2'), MULTI_CHAR('atext1_3'), MULTI_CHAR('atext1_4'), MULTI_CHAR('atext1_5'), }; if (i_stringID != mCurrentAString) { @@ -2111,7 +2111,7 @@ void dMenu_Collect2D_c::setAButtonString(u16 i_stringID) { void dMenu_Collect2D_c::setBButtonString(u16 i_stringID) { static const u64 text_b_tag[5] = { - 'btext1_1', 'btext1_2', 'btext1_3', 'btext1_4', 'btext1_5', + MULTI_CHAR('btext1_1'), MULTI_CHAR('btext1_2'), MULTI_CHAR('btext1_3'), MULTI_CHAR('btext1_4'), MULTI_CHAR('btext1_5'), }; if (i_stringID != mCurrentBString) { @@ -2145,23 +2145,23 @@ void dMenu_Collect2D_c::setItemNameString(u8 param_0, u8 param_1) { } else { #if REGION_JPN char* stringPtr = - static_cast(mpScreen->search('item_n00'))->getStringPtr(); + static_cast(mpScreen->search(MULTI_CHAR('item_n00')))->getStringPtr(); dMeter2Info_getStringKanji(uVar6, stringPtr, NULL); - stringPtr = static_cast(mpScreen->search('item_n01'))->getStringPtr(); + stringPtr = static_cast(mpScreen->search(MULTI_CHAR('item_n01')))->getStringPtr(); dMeter2Info_getStringKanji(uVar6, stringPtr, NULL); - stringPtr = static_cast(mpScreen->search('item_n02'))->getStringPtr(); + stringPtr = static_cast(mpScreen->search(MULTI_CHAR('item_n02')))->getStringPtr(); dMeter2Info_getStringKanji(uVar6, stringPtr, NULL); - stringPtr = static_cast(mpScreen->search('item_n03'))->getStringPtr(); + stringPtr = static_cast(mpScreen->search(MULTI_CHAR('item_n03')))->getStringPtr(); dMeter2Info_getStringKanji(uVar6, stringPtr, NULL); #else char* stringPtr = - static_cast(mpScreen->search('item_n04'))->getStringPtr(); + static_cast(mpScreen->search(MULTI_CHAR('item_n04')))->getStringPtr(); dMeter2Info_getStringKanji(uVar6, stringPtr, NULL); - stringPtr = static_cast(mpScreen->search('item_n05'))->getStringPtr(); + stringPtr = static_cast(mpScreen->search(MULTI_CHAR('item_n05')))->getStringPtr(); dMeter2Info_getStringKanji(uVar6, stringPtr, NULL); - stringPtr = static_cast(mpScreen->search('item_n06'))->getStringPtr(); + stringPtr = static_cast(mpScreen->search(MULTI_CHAR('item_n06')))->getStringPtr(); dMeter2Info_getStringKanji(uVar6, stringPtr, NULL); - stringPtr = static_cast(mpScreen->search('item_n07'))->getStringPtr(); + stringPtr = static_cast(mpScreen->search(MULTI_CHAR('item_n07')))->getStringPtr(); dMeter2Info_getStringKanji(uVar6, stringPtr, NULL); #endif } @@ -2171,21 +2171,21 @@ void dMenu_Collect2D_c::setItemNameString(u8 param_0, u8 param_1) { void dMenu_Collect2D_c::setItemNameStringNull() { mItemNameString = 0; #if REGION_JPN - J2DTextBox* textBox = (J2DTextBox*)mpScreen->search('item_n00'); + J2DTextBox* textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('item_n00')); strcpy(textBox->getStringPtr(), ""); - textBox = (J2DTextBox*)mpScreen->search('item_n01'); + textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('item_n01')); strcpy(textBox->getStringPtr(), ""); - textBox = (J2DTextBox*)mpScreen->search('item_n02'); + textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('item_n02')); strcpy(textBox->getStringPtr(), ""); - textBox = (J2DTextBox*)mpScreen->search('item_n03'); + textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('item_n03')); #else - J2DTextBox* textBox = (J2DTextBox*)mpScreen->search('item_n04'); + J2DTextBox* textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('item_n04')); strcpy(textBox->getStringPtr(), ""); - textBox = (J2DTextBox*)mpScreen->search('item_n05'); + textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('item_n05')); strcpy(textBox->getStringPtr(), ""); - textBox = (J2DTextBox*)mpScreen->search('item_n06'); + textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('item_n06')); strcpy(textBox->getStringPtr(), ""); - textBox = (J2DTextBox*)mpScreen->search('item_n07'); + textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('item_n07')); #endif strcpy(textBox->getStringPtr(), ""); } diff --git a/src/d/d_menu_dmap.cpp b/src/d/d_menu_dmap.cpp index b20fcedee0..bd81807b18 100644 --- a/src/d/d_menu_dmap.cpp +++ b/src/d/d_menu_dmap.cpp @@ -146,32 +146,32 @@ void dMenu_DmapBg_c::mapScreenInit() { } #if (PLATFORM_WII || PLATFORM_SHIELD) - mpBlack = new CPaneMgrAlpha(mMapScreen[0], 'm_black', 2, NULL); + mpBlack = new CPaneMgrAlpha(mMapScreen[0], MULTI_CHAR('m_black'), 2, NULL); JUT_ASSERT(699, mpBlack != NULL); mpBlack->setAlphaRate(0.0f); #else mpBlack = NULL; #endif - mMapScreen[0]->search('map_icon')->hide(); - mMapScreen[0]->search('map_aria')->hide(); - mMapScreen[0]->search('n_all')->hide(); - mMapScreen[1]->search('n_all')->hide(); - mMapScreen[0]->search('m_black')->hide(); - mMapScreen[1]->search('bs_00_0')->hide(); - mMapScreen[1]->search('bs_00_1')->hide(); - mMapScreen[1]->search('gold00_0')->hide(); - mMapScreen[1]->search('gold00_1')->hide(); - mMapScreen[1]->search('m_black')->hide(); - mMapScreen[1]->search('center_n')->hide(); - mMapScreen[1]->search('map_ai_n')->setBasePosition(J2DBasePosition_0); - mMapScreen[0]->search('center_n')->setBasePosition(J2DBasePosition_4); + mMapScreen[0]->search(MULTI_CHAR('map_icon'))->hide(); + mMapScreen[0]->search(MULTI_CHAR('map_aria'))->hide(); + mMapScreen[0]->search(MULTI_CHAR('n_all'))->hide(); + mMapScreen[1]->search(MULTI_CHAR('n_all'))->hide(); + mMapScreen[0]->search(MULTI_CHAR('m_black'))->hide(); + mMapScreen[1]->search(MULTI_CHAR('bs_00_0'))->hide(); + mMapScreen[1]->search(MULTI_CHAR('bs_00_1'))->hide(); + mMapScreen[1]->search(MULTI_CHAR('gold00_0'))->hide(); + mMapScreen[1]->search(MULTI_CHAR('gold00_1'))->hide(); + mMapScreen[1]->search(MULTI_CHAR('m_black'))->hide(); + mMapScreen[1]->search(MULTI_CHAR('center_n'))->hide(); + mMapScreen[1]->search(MULTI_CHAR('map_ai_n'))->setBasePosition(J2DBasePosition_0); + mMapScreen[0]->search(MULTI_CHAR('center_n'))->setBasePosition(J2DBasePosition_4); OSInitFastCast(); { Mtx m; CPaneMgr pane; - Vec vtx = pane.getGlobalVtx(mMapScreen[1]->search('map_icon'), &m, 0, false, 0); + Vec vtx = pane.getGlobalVtx(mMapScreen[1]->search(MULTI_CHAR('map_icon')), &m, 0, false, 0); field_0xdc0 = vtx.x; field_0xdc4 = vtx.y; } @@ -192,7 +192,7 @@ void dMenu_DmapBg_c::mapScreenInit() { mMapScreen[0]->animation(); setGoldAnimation(true); - mMapPane = (J2DPicture*)mMapScreen[1]->search('map_aria'); + mMapPane = (J2DPicture*)mMapScreen[1]->search(MULTI_CHAR('map_aria')); mMapPane->setCornerColor(JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF)); mMapPane->setWhite(JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF)); @@ -203,7 +203,7 @@ void dMenu_DmapBg_c::mapScreenInit() { mMapWidth = vtx3.x - vtx0.x; mMapHeight = vtx3.y - vtx0.y; - J2DPicture* map_icon_pic = (J2DPicture*)mMapScreen[1]->search('map_icon'); + J2DPicture* map_icon_pic = (J2DPicture*)mMapScreen[1]->search(MULTI_CHAR('map_icon')); map_icon_pic->setBasePosition(J2DBasePosition_4); map_icon_pic->setCornerColor(JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF)); map_icon_pic->setAlpha(0); @@ -211,7 +211,7 @@ void dMenu_DmapBg_c::mapScreenInit() { initiate(dComIfGp_getDmapResArchive()); for (int i = 0; i < 2; i++) { - mpMapSpace[i] = new CPaneMgr(mMapScreen[i], 'mapspace', 0, NULL); + mpMapSpace[i] = new CPaneMgr(mMapScreen[i], MULTI_CHAR('mapspace'), 0, NULL); JUT_ASSERT(817, mpMapSpace[i] != NULL); mpMapSpace[i]->paneTrans(0.0f, -15.0f); @@ -281,15 +281,15 @@ bool dMenu_DmapBg_c::iconScaleAnm() { } void dMenu_DmapBg_c::buttonIconScreenInit() { - static u64 const cont_at[5] = {'cont_at', 'cont_at1', 'cont_at2', 'cont_at3', 'cont_at4'}; - static u64 const cont_bt[5] = {'cont_bt', 'cont_bt1', 'cont_bt2', 'cont_bt3', 'cont_bt4'}; - static u64 const font_at[5] = {'font_at', 'font_at1', 'font_at2', 'font_at3', 'font_at4'}; - static u64 const font_bt[5] = {'font_bt', 'font_bt1', 'font_bt2', 'font_bt3', 'font_bt4'}; + static u64 const cont_at[5] = {MULTI_CHAR('cont_at'), MULTI_CHAR('cont_at1'), MULTI_CHAR('cont_at2'), MULTI_CHAR('cont_at3'), MULTI_CHAR('cont_at4')}; + static u64 const cont_bt[5] = {MULTI_CHAR('cont_bt'), MULTI_CHAR('cont_bt1'), MULTI_CHAR('cont_bt2'), MULTI_CHAR('cont_bt3'), MULTI_CHAR('cont_bt4')}; + static u64 const font_at[5] = {MULTI_CHAR('font_at'), MULTI_CHAR('font_at1'), MULTI_CHAR('font_at2'), MULTI_CHAR('font_at3'), MULTI_CHAR('font_at4')}; + static u64 const font_bt[5] = {MULTI_CHAR('font_bt'), MULTI_CHAR('font_bt1'), MULTI_CHAR('font_bt2'), MULTI_CHAR('font_bt3'), MULTI_CHAR('font_bt4')}; static u64 const c_tag[2] = { #if VERSION == VERSION_GCN_JPN - 'c_text_s', 'c_text' + MULTI_CHAR('c_text_s'), MULTI_CHAR('c_text') #else - 'f_text_s', 'f_text' + MULTI_CHAR('f_text_s'), MULTI_CHAR('f_text') #endif }; @@ -313,9 +313,9 @@ void dMenu_DmapBg_c::buttonIconScreenInit() { #else mDecorateScreen = NULL; mpDecorateRoot = NULL; - mButtonScreen->search('w_spot')->hide(); - mButtonScreen->search('spot00')->hide(); - mButtonScreen->search('spot01')->hide(); + mButtonScreen->search(MULTI_CHAR('w_spot'))->hide(); + mButtonScreen->search(MULTI_CHAR('spot00'))->hide(); + mButtonScreen->search(MULTI_CHAR('spot01'))->hide(); #endif mpButtonRoot = new CPaneMgrAlphaMorf(mButtonScreen, 'ROOT', 2, NULL); @@ -326,7 +326,7 @@ void dMenu_DmapBg_c::buttonIconScreenInit() { mpButtonText[i] = NULL; } - mpCButton = new CPaneMgrAlpha(mButtonScreen, 'c_btn', 2, NULL); + mpCButton = new CPaneMgrAlpha(mButtonScreen, MULTI_CHAR('c_btn'), 2, NULL); JUT_ASSERT(978, mpCButton != NULL); mpJButton = NULL; @@ -372,9 +372,9 @@ void dMenu_DmapBg_c::buttonIconScreenInit() { void dMenu_DmapBg_c::setAButtonString(u32 i_msgNo) { static u64 const cont_at[5] = { #if VERSION == VERSION_GCN_JPN - 'cont_at', 'cont_at1', 'cont_at2', 'cont_at3', 'cont_at4' + MULTI_CHAR('cont_at'), MULTI_CHAR('cont_at1'), MULTI_CHAR('cont_at2'), MULTI_CHAR('cont_at3'), MULTI_CHAR('cont_at4') #else - 'font_at', 'font_at1', 'font_at2', 'font_at3', 'font_at4' + MULTI_CHAR('font_at'), MULTI_CHAR('font_at1'), MULTI_CHAR('font_at2'), MULTI_CHAR('font_at3'), MULTI_CHAR('font_at4') #endif }; for (int i = 0; i < 5; i++) { @@ -389,9 +389,9 @@ void dMenu_DmapBg_c::setAButtonString(u32 i_msgNo) { void dMenu_DmapBg_c::setBButtonString(u32 i_msgNo) { static u64 const cont_bt[5] = { #if VERSION == VERSION_GCN_JPN - 'cont_bt', 'cont_bt1', 'cont_bt2', 'cont_bt3', 'cont_bt4' + MULTI_CHAR('cont_bt'), MULTI_CHAR('cont_bt1'), MULTI_CHAR('cont_bt2'), MULTI_CHAR('cont_bt3'), MULTI_CHAR('cont_bt4') #else - 'font_bt', 'font_bt1', 'font_bt2', 'font_bt3', 'font_bt4' + MULTI_CHAR('font_bt'), MULTI_CHAR('font_bt1'), MULTI_CHAR('font_bt2'), MULTI_CHAR('font_bt3'), MULTI_CHAR('font_bt4') #endif }; for (int i = 0; i < 5; i++) { @@ -412,9 +412,9 @@ dMenu_Dmap_c* dMenu_Dmap_c::myclass; void dMenu_DmapBg_c::setCButtonString(u32 i_msgNo) { static u64 const c_tag[2] = { #if VERSION == VERSION_GCN_JPN - 'c_text_s', 'c_text' + MULTI_CHAR('c_text_s'), MULTI_CHAR('c_text') #else - 'f_text_s', 'f_text' + MULTI_CHAR('f_text_s'), MULTI_CHAR('f_text') #endif }; int i; @@ -478,7 +478,7 @@ void dMenu_DmapBg_c::baseScreenInit() { JUT_ASSERT(1362, fg != false); dPaneClass_showNullPane(mFloorScreen); - mBaseScreen->search('w_btn_n')->hide(); + mBaseScreen->search(MULTI_CHAR('w_btn_n'))->hide(); mpBaseRoot = new CPaneMgrAlphaMorf(mBaseScreen, 'ROOT', 2, NULL); JUT_ASSERT(1396, mpBaseRoot != NULL); @@ -493,11 +493,11 @@ void dMenu_DmapBg_c::baseScreenInit() { mpDrawCursor->setParam(0.95f, 0.9f, 0.1f, 0.6f, 0.5f); #if VERSION == VERSION_GCN_JPN - J2DTextBox* uVar9 = (J2DTextBox*)mBaseScreen->search('t_t00'); - mBaseScreen->search('f_t_00')->hide(); + J2DTextBox* uVar9 = (J2DTextBox*)mBaseScreen->search(MULTI_CHAR('t_t00')); + mBaseScreen->search(MULTI_CHAR('f_t_00'))->hide(); #else - J2DTextBox* uVar9 = (J2DTextBox*)mBaseScreen->search('f_t_00'); - mBaseScreen->search('t_t00')->hide(); + J2DTextBox* uVar9 = (J2DTextBox*)mBaseScreen->search(MULTI_CHAR('f_t_00')); + mBaseScreen->search(MULTI_CHAR('t_t00'))->hide(); #endif uVar9->setFont(mDoExt_getSubFont()); uVar9->setString(32, ""); @@ -523,11 +523,11 @@ void dMenu_DmapBg_c::setFloorMessage() { }; #if VERSION == VERSION_GCN_JPN - #define FLOOR_TAG(A, B) ('ffoor0_0' | (A<<16) | (B)) - #define FFOOR_TAG(A, B) ('floor0_0' | (A<<16) | (B)) + #define FLOOR_TAG(A, B) (MULTI_CHAR('ffoor0_0') | (A<<16) | (B)) + #define FFOOR_TAG(A, B) (MULTI_CHAR('floor0_0') | (A<<16) | (B)) #else - #define FLOOR_TAG(A, B) ('floor0_0' | (A<<16) | (B)) - #define FFOOR_TAG(A, B) ('ffoor0_0' | (A<<16) | (B)) + #define FLOOR_TAG(A, B) (MULTI_CHAR('floor0_0') | (A<<16) | (B)) + #define FFOOR_TAG(A, B) (MULTI_CHAR('ffoor0_0') | (A<<16) | (B)) #endif floor_textbox_1[0] = (J2DTextBox*)mFloorScreen->search(FFOOR_TAG(7, 1)); @@ -794,8 +794,8 @@ void dMenu_DmapBg_c::setAllAlphaRate(f32 i_rate, bool param_2) { } void dMenu_DmapBg_c::setGoldAnimation(bool param_1) { - J2DPane* gold0 = mMapScreen[0]->search('gold00_0'); - J2DPane* gold1 = mMapScreen[0]->search('gold00_1'); + J2DPane* gold0 = mMapScreen[0]->search(MULTI_CHAR('gold00_0')); + J2DPane* gold1 = mMapScreen[0]->search(MULTI_CHAR('gold00_1')); if (param_1) { gold0->setAnimation(field_0xd28[0]); @@ -808,13 +808,13 @@ void dMenu_DmapBg_c::setGoldAnimation(bool param_1) { void dMenu_DmapBg_c::setGoldFrameAlphaRate(f32 i_rate) { if (0.0f == i_rate) { - mMapScreen[0]->search('gold00_0')->hide(); - mMapScreen[0]->search('gold00_1')->hide(); + mMapScreen[0]->search(MULTI_CHAR('gold00_0'))->hide(); + mMapScreen[0]->search(MULTI_CHAR('gold00_1'))->hide(); } else { - mMapScreen[0]->search('gold00_0')->show(); - mMapScreen[0]->search('gold00_1')->show(); - mMapScreen[0]->search('gold00_0')->setAlpha(i_rate * 255.0f); - mMapScreen[0]->search('gold00_1')->setAlpha(i_rate * 255.0f); + mMapScreen[0]->search(MULTI_CHAR('gold00_0'))->show(); + mMapScreen[0]->search(MULTI_CHAR('gold00_1'))->show(); + mMapScreen[0]->search(MULTI_CHAR('gold00_0'))->setAlpha(i_rate * 255.0f); + mMapScreen[0]->search(MULTI_CHAR('gold00_1'))->setAlpha(i_rate * 255.0f); } } @@ -874,7 +874,7 @@ void dMenu_DmapBg_c::draw() { mMapScreen[0]->draw(field_0xd94, field_0xd98, grafContext); if (mpBackTexture != NULL) { - J2DPane* center_pane = mMapScreen[0]->search('center_n'); + J2DPane* center_pane = mMapScreen[0]->search(MULTI_CHAR('center_n')); CPaneMgr pane; Mtx mtx; Vec local_200 = pane.getGlobalVtx(center_pane, &mtx, 0, false, 0); @@ -903,7 +903,7 @@ void dMenu_DmapBg_c::draw() { mMapScreen[1]->draw(field_0xd94, field_0xd98, grafContext); - J2DPane* center_pane = mMapScreen[1]->search('center_n'); + J2DPane* center_pane = mMapScreen[1]->search(MULTI_CHAR('center_n')); CPaneMgr pane; Mtx local_110; Vec local_218 = pane.getGlobalVtx(center_pane, &local_110, 0, false, 0); @@ -1060,18 +1060,18 @@ dMenu_Dmap_c::dMenu_Dmap_c(JKRExpHeap* param_1, STControl* param_2, CSTControl* } void dMenu_Dmap_c::screenInit() { - static u64 const floor_tag[8] = {'floor7_n', 'floor0_n', 'floor1_n', 'floor2_n', - 'floor3_n', 'floor4_n', 'floor5_n', 'floor6_n'}; - static u64 const icon_tag[8] = {'ico_set7', 'ico_set0', 'ico_set1', 'ico_set2', - 'ico_set3', 'ico_set4', 'ico_set5', 'ico_set6'}; - static u64 const boss_tag[8] = {'ic_st_b7', 'ic_st_b0', 'ic_st_b1', 'ic_st_b2', - 'ic_st_b3', 'ic_st_b4', 'ic_st_b5', 'ic_st_b6'}; - static u64 const stay_tag[2] = {'rink_nul', 'boss_nul'}; - static u64 const waku_tag[3] = {'gray_map', 'gray_con', 'gray_key'}; - static u64 const key_tag[3] = {'key_00', 'key_01', 'key_02'}; - static u64 const item_tag[3] = {'map000', 'con000', 'i_key_n'}; + static u64 const floor_tag[8] = {MULTI_CHAR('floor7_n'), MULTI_CHAR('floor0_n'), MULTI_CHAR('floor1_n'), MULTI_CHAR('floor2_n'), + MULTI_CHAR('floor3_n'), MULTI_CHAR('floor4_n'), MULTI_CHAR('floor5_n'), MULTI_CHAR('floor6_n')}; + static u64 const icon_tag[8] = {MULTI_CHAR('ico_set7'), MULTI_CHAR('ico_set0'), MULTI_CHAR('ico_set1'), MULTI_CHAR('ico_set2'), + MULTI_CHAR('ico_set3'), MULTI_CHAR('ico_set4'), MULTI_CHAR('ico_set5'), MULTI_CHAR('ico_set6')}; + static u64 const boss_tag[8] = {MULTI_CHAR('ic_st_b7'), MULTI_CHAR('ic_st_b0'), MULTI_CHAR('ic_st_b1'), MULTI_CHAR('ic_st_b2'), + MULTI_CHAR('ic_st_b3'), MULTI_CHAR('ic_st_b4'), MULTI_CHAR('ic_st_b5'), MULTI_CHAR('ic_st_b6')}; + static u64 const stay_tag[2] = {MULTI_CHAR('rink_nul'), MULTI_CHAR('boss_nul')}; + static u64 const waku_tag[3] = {MULTI_CHAR('gray_map'), MULTI_CHAR('gray_con'), MULTI_CHAR('gray_key')}; + static u64 const key_tag[3] = {MULTI_CHAR('key_00'), MULTI_CHAR('key_01'), MULTI_CHAR('key_02')}; + static u64 const item_tag[3] = {MULTI_CHAR('map000'), MULTI_CHAR('con000'), MULTI_CHAR('i_key_n')}; - field_0x10 = new CPaneMgr(mpDrawBg->mBaseScreen, 'floo_s_n', 0, NULL); + field_0x10 = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('floo_s_n'), 0, NULL); for (int i = 0; i < 8; i++) { field_0x114[i] = 0.0f; @@ -1118,7 +1118,7 @@ void dMenu_Dmap_c::screenInit() { f32 var_f29; f32 var_f28 = 7.0f; - var_f29 = mpDrawBg->mFloorScreen->search('s_n_all')->getHeight(); + var_f29 = mpDrawBg->mFloorScreen->search(MULTI_CHAR('s_n_all'))->getHeight(); f32 var_f30 = mSelFloor[0]->getPanePtr()->getHeight(); f32 var_f27 = mFloorAll - mBottomFloor + 1; @@ -1137,28 +1137,28 @@ void dMenu_Dmap_c::screenInit() { iconMoveCalc(); Vec local_b0 = mSelFloor[getDefaultCurFloorPos()]->getGlobalVtxCenter(false, 0); mpDrawBg->mpDrawCursor->setPos(local_b0.x + field_0x104, local_b0.y, mSelFloor[getDefaultCurFloorPos()]->getPanePtr(), true); - field_0x94 = new CPaneMgr(mpDrawBg->mBaseScreen, 'item_s_n', 0, NULL); - field_0x7c[0] = new CPaneMgr(mpDrawBg->mBaseScreen, 'map_n', 3, NULL); - field_0x7c[1] = new CPaneMgr(mpDrawBg->mBaseScreen, 'con_n', 3, NULL); - field_0x7c[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'key_n', 3, NULL); - field_0x88[0] = new CPaneMgr(mpDrawBg->mBaseScreen, 'map000', 3, NULL); - field_0x88[1] = new CPaneMgr(mpDrawBg->mBaseScreen, 'con000', 3, NULL); + field_0x94 = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('item_s_n'), 0, NULL); + field_0x7c[0] = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('map_n'), 3, NULL); + field_0x7c[1] = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('con_n'), 3, NULL); + field_0x7c[2] = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('key_n'), 3, NULL); + field_0x88[0] = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('map000'), 3, NULL); + field_0x88[1] = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('con000'), 3, NULL); - if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV2) { - field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'i_key_n', 3, NULL); - } else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV5) { - field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'lv5_k_n', 3, NULL); + if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11) { + field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('i_key_n'), 3, NULL); + } else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14) { + field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('lv5_k_n'), 3, NULL); } else { - field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'nor_k_n', 3, NULL); + field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('nor_k_n'), 3, NULL); } for (int i = 0; i < 3; i++) { field_0x88[i]->scale(0.9f, 0.9f); } - if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV2) { - mpDrawBg->mBaseScreen->search('lv5_k_n')->hide(); - mpDrawBg->mBaseScreen->search('nor_k_n')->hide(); + if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11) { + mpDrawBg->mBaseScreen->search(MULTI_CHAR('lv5_k_n'))->hide(); + mpDrawBg->mBaseScreen->search(MULTI_CHAR('nor_k_n'))->hide(); u8 key_num = 0; if (checkItemGet(fpcNm_ITEM_L2_KEY_PIECES1, 1)) { @@ -1186,19 +1186,19 @@ void dMenu_Dmap_c::screenInit() { } if (key_num == 0 || dMeter2Info_isTempBit(0)) { - mpDrawBg->mBaseScreen->search('key_n_n')->hide(); + mpDrawBg->mBaseScreen->search(MULTI_CHAR('key_n_n'))->hide(); } else { ResTIMG* tex = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', dMeter2Info_getNumberTextureName(key_num)); - ((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_2_s'))->changeTexture(tex, 0); - ((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_2'))->changeTexture(tex, 0); + ((J2DPicture*)mpDrawBg->mBaseScreen->search(MULTI_CHAR('c_n_2_s')))->changeTexture(tex, 0); + ((J2DPicture*)mpDrawBg->mBaseScreen->search(MULTI_CHAR('c_n_2')))->changeTexture(tex, 0); tex = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', dMeter2Info_getNumberTextureName(3)); - ((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_1_s'))->changeTexture(tex, 0); - ((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_1'))->changeTexture(tex, 0); + ((J2DPicture*)mpDrawBg->mBaseScreen->search(MULTI_CHAR('c_n_1_s')))->changeTexture(tex, 0); + ((J2DPicture*)mpDrawBg->mBaseScreen->search(MULTI_CHAR('c_n_1')))->changeTexture(tex, 0); } - } else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV5) { - mpDrawBg->mBaseScreen->search('i_key_n')->hide(); - mpDrawBg->mBaseScreen->search('nor_k_n')->hide(); - mpDrawBg->mBaseScreen->search('key_n_n')->hide(); + } else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14) { + mpDrawBg->mBaseScreen->search(MULTI_CHAR('i_key_n'))->hide(); + mpDrawBg->mBaseScreen->search(MULTI_CHAR('nor_k_n'))->hide(); + mpDrawBg->mBaseScreen->search(MULTI_CHAR('key_n_n'))->hide(); u8 itemNo = fpcNm_ITEM_NONE; field_0x174[2] = 0; @@ -1229,14 +1229,14 @@ void dMenu_Dmap_c::screenInit() { case fpcNm_ITEM_TOMATO_PUREE: case fpcNm_ITEM_TASTE: dMeter2Info_readItemTexture(itemNo, mItemTexBuf, - (J2DPicture*)mpDrawBg->mBaseScreen->search('lv5_boss'), NULL, NULL, NULL, NULL, + (J2DPicture*)mpDrawBg->mBaseScreen->search(MULTI_CHAR('lv5_boss')), NULL, NULL, NULL, NULL, NULL, NULL, -1); break; } } else { - mpDrawBg->mBaseScreen->search('i_key_n')->hide(); - mpDrawBg->mBaseScreen->search('lv5_k_n')->hide(); - mpDrawBg->mBaseScreen->search('key_n_n')->hide(); + mpDrawBg->mBaseScreen->search(MULTI_CHAR('i_key_n'))->hide(); + mpDrawBg->mBaseScreen->search(MULTI_CHAR('lv5_k_n'))->hide(); + mpDrawBg->mBaseScreen->search(MULTI_CHAR('key_n_n'))->hide(); field_0x174[2] = (u8)dComIfGs_isDungeonItemBossKey() ? fpcNm_ITEM_BOSS_KEY : 0; } @@ -1257,9 +1257,9 @@ void dMenu_Dmap_c::screenInit() { mpDrawBg->mBaseScreen->search(waku_tag[i])->hide(); if (i == 2) { - mpDrawBg->mBaseScreen->search('lv5_k_n')->hide(); - mpDrawBg->mBaseScreen->search('nor_k_n')->hide(); - mpDrawBg->mBaseScreen->search('key_n_n')->hide(); + mpDrawBg->mBaseScreen->search(MULTI_CHAR('lv5_k_n'))->hide(); + mpDrawBg->mBaseScreen->search(MULTI_CHAR('nor_k_n'))->hide(); + mpDrawBg->mBaseScreen->search(MULTI_CHAR('key_n_n'))->hide(); } } } @@ -1269,7 +1269,7 @@ void dMenu_Dmap_c::screenInit() { } field_0x94->hide(); - field_0x98 = new CPaneMgr(mpDrawBg->mBaseScreen, 'so_s_n', 0, NULL); + field_0x98 = new CPaneMgr(mpDrawBg->mBaseScreen, MULTI_CHAR('so_s_n'), 0, NULL); field_0x98->hide(); } @@ -2024,8 +2024,8 @@ void dMenu_Dmap_c::_draw() { sp14[1] = -(field_0x138 + 100.0f * (sp20 * mMapCtrl->getPixelPerCm())); Vec spC; - spC.x = mpDrawBg->mMapScreen[0]->search('center_n')->getGlbBounds().i.x + (mpDrawBg->mMapScreen[0]->search('center_n')->getWidth() / 2); - spC.y = mpDrawBg->mMapScreen[0]->search('center_n')->getGlbBounds().i.y + (mpDrawBg->mMapScreen[0]->search('center_n')->getHeight() / 2); + spC.x = mpDrawBg->mMapScreen[0]->search(MULTI_CHAR('center_n'))->getGlbBounds().i.x + (mpDrawBg->mMapScreen[0]->search(MULTI_CHAR('center_n'))->getWidth() / 2); + spC.y = mpDrawBg->mMapScreen[0]->search(MULTI_CHAR('center_n'))->getGlbBounds().i.y + (mpDrawBg->mMapScreen[0]->search(MULTI_CHAR('center_n'))->getHeight() / 2); CPaneMgr sp70; //!@bug It's unclear what this is supposed to be, but a stack pointer being converted to a bool is probably not intended. diff --git a/src/d/d_menu_fishing.cpp b/src/d/d_menu_fishing.cpp index 09aa3b057a..b71f933f6d 100644 --- a/src/d/d_menu_fishing.cpp +++ b/src/d/d_menu_fishing.cpp @@ -219,54 +219,54 @@ void dMenu_Fishing_c::wait_move() { void dMenu_Fishing_c::screenSetBase() { static const u64 fish_n[6] = { - 'fish_n_6', 'fish_n_5', 'fish_n_3', 'fish_n_1', 'fish_n_2', 'fish_n_4', + MULTI_CHAR('fish_n_6'), MULTI_CHAR('fish_n_5'), MULTI_CHAR('fish_n_3'), MULTI_CHAR('fish_n_1'), MULTI_CHAR('fish_n_2'), MULTI_CHAR('fish_n_4'), }; static const u64 fish_p0[6] = { - 'fi_pa_6n', 'fi_pa_5n', 'fi_pa_3n', 'fi_pa_1n', 'fi_pa_2n', 'fi_pa_4n', + MULTI_CHAR('fi_pa_6n'), MULTI_CHAR('fi_pa_5n'), MULTI_CHAR('fi_pa_3n'), MULTI_CHAR('fi_pa_1n'), MULTI_CHAR('fi_pa_2n'), MULTI_CHAR('fi_pa_4n'), }; static const u64 fish_p1[6] = { - 'fi_na_6n', 'fi_na_5n', 'fi_na_3n', 'fi_na_1n', 'fi_na_2n', 'fi_na_4n', + MULTI_CHAR('fi_na_6n'), MULTI_CHAR('fi_na_5n'), MULTI_CHAR('fi_na_3n'), MULTI_CHAR('fi_na_1n'), MULTI_CHAR('fi_na_2n'), MULTI_CHAR('fi_na_4n'), }; - static const u64 fish_p2[6] = {'fi_li_6n', 'fi_li_5n', 'fi_li_3n', - 'fi_li_1n', 'fi_li_2n', 'fi_li_4n'}; + static const u64 fish_p2[6] = {MULTI_CHAR('fi_li_6n'), MULTI_CHAR('fi_li_5n'), MULTI_CHAR('fi_li_3n'), + MULTI_CHAR('fi_li_1n'), MULTI_CHAR('fi_li_2n'), MULTI_CHAR('fi_li_4n')}; static const u64 fish_p3[6] = { - 'b_box_6n', 'b_box_5n', 'b_box_3n', 'b_box_1n', 'b_box_2n', 'b_box_4n', + MULTI_CHAR('b_box_6n'), MULTI_CHAR('b_box_5n'), MULTI_CHAR('b_box_3n'), MULTI_CHAR('b_box_1n'), MULTI_CHAR('b_box_2n'), MULTI_CHAR('b_box_4n'), }; static const u64 fish_p4[6] = { - 'r_box_6n', 'r_box_5n', 'r_box_3n', 'r_box_1n', 'r_box_2n', 'r_box_4n', + MULTI_CHAR('r_box_6n'), MULTI_CHAR('r_box_5n'), MULTI_CHAR('r_box_3n'), MULTI_CHAR('r_box_1n'), MULTI_CHAR('r_box_2n'), MULTI_CHAR('r_box_4n'), }; static const u64 fish_p5[6] = { - 'info_6_n', 'info_5_n', 'info_3_n', 'info_1_n', 'info_2_n', 'info_4_n', + MULTI_CHAR('info_6_n'), MULTI_CHAR('info_5_n'), MULTI_CHAR('info_3_n'), MULTI_CHAR('info_1_n'), MULTI_CHAR('info_2_n'), MULTI_CHAR('info_4_n'), }; static const u64 size_1[6] = { - 'size_t_6', 'size_t_5', 'size_t_3', 'size_t_1', 'size_t_2', 'size_t_4', + MULTI_CHAR('size_t_6'), MULTI_CHAR('size_t_5'), MULTI_CHAR('size_t_3'), MULTI_CHAR('size_t_1'), MULTI_CHAR('size_t_2'), MULTI_CHAR('size_t_4'), }; static const u64 size_unit_1[6] = { - 'cm_t_6', 'cm_t_5', 'cm_t_3', 'cm_t_1', 'cm_t_2', 'cm_t_4', + MULTI_CHAR('cm_t_6'), MULTI_CHAR('cm_t_5'), MULTI_CHAR('cm_t_3'), MULTI_CHAR('cm_t_1'), MULTI_CHAR('cm_t_2'), MULTI_CHAR('cm_t_4'), }; static const u64 count_1[6] = { - 'count_t6', 'count_t5', 'count_t3', 'count_t1', 'count_t2', 'count_t4', + MULTI_CHAR('count_t6'), MULTI_CHAR('count_t5'), MULTI_CHAR('count_t3'), MULTI_CHAR('count_t1'), MULTI_CHAR('count_t2'), MULTI_CHAR('count_t4'), }; static const u64 count_unit_1[6] = { - 'cou_t_6', 'cou_t_5', 'cou_t_3', 'cou_t_1', 'cou_t_2', 'cou_t_4', + MULTI_CHAR('cou_t_6'), MULTI_CHAR('cou_t_5'), MULTI_CHAR('cou_t_3'), MULTI_CHAR('cou_t_1'), MULTI_CHAR('cou_t_2'), MULTI_CHAR('cou_t_4'), }; static const u64 name_0[6] = { - 'name_6', 'name_5', 'name_3', 'name_1', 'name_2', 'name_4', + MULTI_CHAR('name_6'), MULTI_CHAR('name_5'), MULTI_CHAR('name_3'), MULTI_CHAR('name_1'), MULTI_CHAR('name_2'), MULTI_CHAR('name_4'), }; static const u64 fname_0[6] = { - 'f_name_6', 'f_name_5', 'f_name_3', 'f_name_1', 'f_name_2', 'f_name_4', + MULTI_CHAR('f_name_6'), MULTI_CHAR('f_name_5'), MULTI_CHAR('f_name_3'), MULTI_CHAR('f_name_1'), MULTI_CHAR('f_name_2'), MULTI_CHAR('f_name_4'), }; static const u32 name_id[6] = { @@ -280,7 +280,7 @@ void dMenu_Fishing_c::screenSetBase() { mpScreen = new J2DScreen(); mpScreen->setPriority("zelda_fish_window.blo", 0x20000, mpArchive); dPaneClass_showNullPane(mpScreen); - mpParent = new CPaneMgr(mpScreen, 'n_all', 2, NULL); + mpParent = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 2, NULL); mpParent->setAlphaRate(0.0f); for (int i = 0; i < MAX_FINDABLE_FISHES; i++) { mpFishParent[i] = new CPaneMgr(mpScreen, fish_n[i], 0, NULL); @@ -291,15 +291,15 @@ void dMenu_Fishing_c::screenSetBase() { mpFishParts[4][i] = new CPaneMgr(mpScreen, fish_p4[i], 0, NULL); mpFishParts[5][i] = new CPaneMgr(mpScreen, fish_p5[i], 0, NULL); } - mpFishInfoParent[0] = new CPaneMgr(mpScreen, 'info_blu', 0, NULL); - mpFishInfoParent[1] = new CPaneMgr(mpScreen, 'info_red', 0, NULL); + mpFishInfoParent[0] = new CPaneMgr(mpScreen, MULTI_CHAR('info_blu'), 0, NULL); + mpFishInfoParent[1] = new CPaneMgr(mpScreen, MULTI_CHAR('info_red'), 0, NULL); #if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN) - J2DTextBox* textBox = (J2DTextBox*)mpScreen->search('t_t00'); - mpScreen->search('f_t00')->hide(); + J2DTextBox* textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('t_t00')); + mpScreen->search(MULTI_CHAR('f_t00'))->hide(); #else - J2DTextBox* textBox = (J2DTextBox*)mpScreen->search('f_t00'); - mpScreen->search('t_t00')->hide(); + J2DTextBox* textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('f_t00')); + mpScreen->search(MULTI_CHAR('t_t00'))->hide(); #endif textBox->setFont(mDoExt_getSubFont()); @@ -328,8 +328,8 @@ void dMenu_Fishing_c::screenSetBase() { mpFishNameString[i]->setString(0x20, ""); dMeter2Info_getStringKanji(name_id[i], mpFishNameString[i]->getStringPtr(), NULL); } - mpInfoLargestString = (J2DTextBox*)mpScreen->search('inf_size'); - mpInfoNumCaughtString = (J2DTextBox*)mpScreen->search('inf_cou'); + mpInfoLargestString = (J2DTextBox*)mpScreen->search(MULTI_CHAR('inf_size')); + mpInfoNumCaughtString = (J2DTextBox*)mpScreen->search(MULTI_CHAR('inf_cou')); mpInfoLargestString->setFont(mDoExt_getMesgFont()); mpInfoNumCaughtString->setFont(mDoExt_getMesgFont()); mpInfoLargestString->setString(0x20, ""); @@ -339,8 +339,8 @@ void dMenu_Fishing_c::screenSetBase() { } void dMenu_Fishing_c::screenSetDoIcon() { - static const u64 text_a_tag[5] = {'atext1_1', 'atext1_2', 'atext1_3', 'atext1_4', 'atext1_5'}; - static const u64 text_b_tag[5] = {'btext1_1', 'btext1_2', 'btext1_3', 'btext1_4', 'btext1_5'}; + static const u64 text_a_tag[5] = {MULTI_CHAR('atext1_1'), MULTI_CHAR('atext1_2'), MULTI_CHAR('atext1_3'), MULTI_CHAR('atext1_4'), MULTI_CHAR('atext1_5')}; + static const u64 text_b_tag[5] = {MULTI_CHAR('btext1_1'), MULTI_CHAR('btext1_2'), MULTI_CHAR('btext1_3'), MULTI_CHAR('btext1_4'), MULTI_CHAR('btext1_5')}; mpIconScreen = new J2DScreen(); mpIconScreen->setPriority("zelda_collect_soubi_do_icon_parts.blo", 0x20000, mpArchive); diff --git a/src/d/d_menu_fmap2D.cpp b/src/d/d_menu_fmap2D.cpp index a8776ee94b..9963404887 100644 --- a/src/d/d_menu_fmap2D.cpp +++ b/src/d/d_menu_fmap2D.cpp @@ -177,10 +177,10 @@ dMenu_Fmap2DBack_c::dMenu_Fmap2DBack_c() { mpBaseRoot = new CPaneMgrAlphaMorf(mpBaseScreen, 'ROOT', 2, NULL); JUT_ASSERT(264, mpBaseRoot != NULL); - mpMapArea = new CPaneMgr(mpBaseScreen, 'center_n', 0, NULL); + mpMapArea = new CPaneMgr(mpBaseScreen, MULTI_CHAR('center_n'), 0, NULL); JUT_ASSERT(269, mpMapArea != NULL); - mpMapBlack = new CPaneMgr(mpBaseScreen, 'map_blak', 0, NULL); + mpMapBlack = new CPaneMgr(mpBaseScreen, MULTI_CHAR('map_blak'), 0, NULL); JUT_ASSERT(273, mpMapBlack != NULL); mpMeterHaihai = new dMeterHaihai_c(1); @@ -203,12 +203,12 @@ dMenu_Fmap2DBack_c::dMenu_Fmap2DBack_c() { dPaneClass_showNullPane(mpPointScreen); - mpPointParent = new CPaneMgr(mpPointScreen, 'f_po_n', 2, NULL); + mpPointParent = new CPaneMgr(mpPointScreen, MULTI_CHAR('f_po_n'), 2, NULL); JUT_ASSERT(301, mpPointParent != NULL); mpPointParent->scale(g_fmapHIO.mCursorScale, g_fmapHIO.mCursorScale); - static const u64 cur_tag[4] = {'f_po_ru', 'f_po_rd', 'f_po_ld', 'f_po_lu'}; + static const u64 cur_tag[4] = {MULTI_CHAR('f_po_ru'), MULTI_CHAR('f_po_rd'), MULTI_CHAR('f_po_ld'), MULTI_CHAR('f_po_lu')}; for (int i = 0; i < 4; i++) { J2DPicture* picture = static_cast(mpPointScreen->search(cur_tag[i])); @@ -389,7 +389,7 @@ void dMenu_Fmap2DBack_c::draw() { if (g_fmapHIO.mCursorDebugON) { mpPointParent->scale(g_fmapHIO.mCursorScale, g_fmapHIO.mCursorScale); - static const u64 cur_tag[4] = {'f_po_ru', 'f_po_rd', 'f_po_ld', 'f_po_lu'}; + static const u64 cur_tag[4] = {MULTI_CHAR('f_po_ru'), MULTI_CHAR('f_po_rd'), MULTI_CHAR('f_po_ld'), MULTI_CHAR('f_po_lu')}; for (int i = 0; i < 4; i++) { J2DPicture* picture = static_cast(mpPointScreen->search(cur_tag[i])); @@ -1813,8 +1813,8 @@ void dMenu_Fmap2DBack_c::btkAnimeLoop(f32 i_step) { mAnmFrame = 0.0f; } - mpBaseScreen->search('gold00_0')->setAnimation(mpBaseAnm); - mpBaseScreen->search('gold00_1')->setAnimation(mpBaseAnm); + mpBaseScreen->search(MULTI_CHAR('gold00_0'))->setAnimation(mpBaseAnm); + mpBaseScreen->search(MULTI_CHAR('gold00_1'))->setAnimation(mpBaseAnm); mpBaseScreen->animation(); } @@ -2186,46 +2186,46 @@ dMenu_Fmap2DTop_c::dMenu_Fmap2DTop_c(JKRExpHeap* i_heap, STControl* i_stick) { mpAnalogStickAlpha = NULL; mpAnalogStick = NULL; mpDpad = NULL; - mpTitleScreen->search('tri_Null')->hide(); + mpTitleScreen->search(MULTI_CHAR('tri_Null'))->hide(); #endif #if PLATFORM_GCN - mpArrowLAlpha[0] = new CPaneMgrAlpha(mpTitleScreen, 'yaji_04', 0, NULL); - mpArrowLAlpha[1] = new CPaneMgrAlpha(mpTitleScreen, 'yaji_05', 0, NULL); - mpArrowRAlpha[0] = new CPaneMgrAlpha(mpTitleScreen, 'yaji_06', 0, NULL); - mpArrowRAlpha[1] = new CPaneMgrAlpha(mpTitleScreen, 'yaji_07', 0, NULL); + mpArrowLAlpha[0] = new CPaneMgrAlpha(mpTitleScreen, MULTI_CHAR('yaji_04'), 0, NULL); + mpArrowLAlpha[1] = new CPaneMgrAlpha(mpTitleScreen, MULTI_CHAR('yaji_05'), 0, NULL); + mpArrowRAlpha[0] = new CPaneMgrAlpha(mpTitleScreen, MULTI_CHAR('yaji_06'), 0, NULL); + mpArrowRAlpha[1] = new CPaneMgrAlpha(mpTitleScreen, MULTI_CHAR('yaji_07'), 0, NULL); - mpDpadAlpha = new CPaneMgrAlpha(mpTitleScreen, 'juji_c_n', 2, NULL); + mpDpadAlpha = new CPaneMgrAlpha(mpTitleScreen, MULTI_CHAR('juji_c_n'), 2, NULL); mpDpadAlpha->setAlphaRate(0.0f); mpAnalogStickAlpha = new CPaneMgrAlpha(mpTitleScreen, 'as_n', 2, NULL); mpAnalogStickAlpha->setAlphaRate(0.0f); mpAnalogStick = new CPaneMgr(mpTitleScreen, 'as_n', 0, NULL); - mpDpad = new CPaneMgr(mpTitleScreen, 'juji_c_n', 0, NULL); + mpDpad = new CPaneMgr(mpTitleScreen, MULTI_CHAR('juji_c_n'), 0, NULL); #endif #if PLATFORM_SHIELD - mpButtonA = new CPaneMgr(mpTitleScreen, 'abtn_n', 2, NULL); + mpButtonA = new CPaneMgr(mpTitleScreen, MULTI_CHAR('abtn_n'), 2, NULL); JUT_ASSERT(3935, mpButtonA != NULL); - mpButtonB = new CPaneMgr(mpTitleScreen, 'bbtn_n', 2, NULL); + mpButtonB = new CPaneMgr(mpTitleScreen, MULTI_CHAR('bbtn_n'), 2, NULL); JUT_ASSERT(3938, mpButtonB != NULL); - mpButtonZ = new CPaneMgr(mpTitleScreen, 'j_scal_n', 2, NULL); + mpButtonZ = new CPaneMgr(mpTitleScreen, MULTI_CHAR('j_scal_n'), 2, NULL); JUT_ASSERT(3941, mpButtonZ != NULL); - mpButtonTextA = new CPaneMgr(mpTitleScreen, 'a_text_n', 2, NULL); + mpButtonTextA = new CPaneMgr(mpTitleScreen, MULTI_CHAR('a_text_n'), 2, NULL); JUT_ASSERT(3953, mpButtonTextA != NULL); - mpButtonTextB = new CPaneMgr(mpTitleScreen, 'b_text_n', 2, NULL); + mpButtonTextB = new CPaneMgr(mpTitleScreen, MULTI_CHAR('b_text_n'), 2, NULL); JUT_ASSERT(3956, mpButtonTextB != NULL); - mpButtonTextZ = new CPaneMgr(mpTitleScreen, 'z_text_n', 2, NULL); + mpButtonTextZ = new CPaneMgr(mpTitleScreen, MULTI_CHAR('z_text_n'), 2, NULL); JUT_ASSERT(3959, mpButtonTextZ != NULL); #else - mpButtonA = new CPaneMgr(mpTitleScreen, 'abtn_n1', 2, NULL); + mpButtonA = new CPaneMgr(mpTitleScreen, MULTI_CHAR('abtn_n1'), 2, NULL); JUT_ASSERT(3935, mpButtonA != NULL); - mpButtonB = new CPaneMgr(mpTitleScreen, 'bbtn_n1', 2, NULL); + mpButtonB = new CPaneMgr(mpTitleScreen, MULTI_CHAR('bbtn_n1'), 2, NULL); JUT_ASSERT(3938, mpButtonB != NULL); - mpButtonZ = new CPaneMgr(mpTitleScreen, 'zbtn_n1', 2, NULL); + mpButtonZ = new CPaneMgr(mpTitleScreen, MULTI_CHAR('zbtn_n1'), 2, NULL); JUT_ASSERT(3941, mpButtonZ != NULL); - mpButtonTextA = new CPaneMgr(mpTitleScreen, 'a_text_n', 2, NULL); + mpButtonTextA = new CPaneMgr(mpTitleScreen, MULTI_CHAR('a_text_n'), 2, NULL); JUT_ASSERT(3953, mpButtonTextA != NULL); - mpButtonTextB = new CPaneMgr(mpTitleScreen, 'b_text_n', 2, NULL); + mpButtonTextB = new CPaneMgr(mpTitleScreen, MULTI_CHAR('b_text_n'), 2, NULL); JUT_ASSERT(3956, mpButtonTextB != NULL); - mpButtonTextZ = new CPaneMgr(mpTitleScreen, 'z_text_n', 2, NULL); + mpButtonTextZ = new CPaneMgr(mpTitleScreen, MULTI_CHAR('z_text_n'), 2, NULL); JUT_ASSERT(3959, mpButtonTextZ != NULL); #endif mpButtonA->setAlphaRate(0.0f); @@ -2235,16 +2235,16 @@ dMenu_Fmap2DTop_c::dMenu_Fmap2DTop_c(JKRExpHeap* i_heap, STControl* i_stick) { mpButtonTextB->setAlphaRate(0.0f); mpButtonTextZ->setAlphaRate(0.0f); - mpNamePane = new CPaneMgr(mpTitleScreen, 'name_n', 0, NULL); + mpNamePane = new CPaneMgr(mpTitleScreen, MULTI_CHAR('name_n'), 0, NULL); JUT_ASSERT(3970, mpNamePane != NULL); - mpSubPane = new CPaneMgr(mpTitleScreen, 'sub_n_n', 0, NULL); + mpSubPane = new CPaneMgr(mpTitleScreen, MULTI_CHAR('sub_n_n'), 0, NULL); JUT_ASSERT(3974, mpSubPane != NULL); if (dMeter2Info_getMapStatus() == 9) { mpNamePane->hide(); mpSubPane->hide(); } - mpContPane = new CPaneMgr(mpTitleScreen, 'cont_n', 0, NULL); + mpContPane = new CPaneMgr(mpTitleScreen, MULTI_CHAR('cont_n'), 0, NULL); JUT_ASSERT(3984, mpContPane != NULL); mTitlePosX = mTitlePosY = 0.0f; @@ -2270,8 +2270,8 @@ dMenu_Fmap2DTop_c::dMenu_Fmap2DTop_c(JKRExpHeap* i_heap, STControl* i_stick) { mAnmFrame = 0.0f; - static const u64 area_name[3] = {'i_name_s', 'i_name' ,'i_name1'}; - static const u64 farea_name[3] = {'f_name_1', 'f_name3', 'f_name2'}; + static const u64 area_name[3] = {MULTI_CHAR('i_name_s'), MULTI_CHAR('i_name') ,MULTI_CHAR('i_name1')}; + static const u64 farea_name[3] = {MULTI_CHAR('f_name_1'), MULTI_CHAR('f_name3'), MULTI_CHAR('f_name2')}; for (int i = 0; i < 3; i++) { #if VERSION == VERSION_GCN_JPN static_cast(mpTitleScreen->search(area_name[i])) @@ -2287,17 +2287,17 @@ dMenu_Fmap2DTop_c::dMenu_Fmap2DTop_c(JKRExpHeap* i_heap, STControl* i_stick) { } #if PLATFORM_GCN static const u64 sfont_name[7] = { - 'sfont00', 'sfontl0', 'sfontl1', 'sfontl2', 'sfontb0', 'sfontb1', 'sfontb2' + MULTI_CHAR('sfont00'), MULTI_CHAR('sfontl0'), MULTI_CHAR('sfontl1'), MULTI_CHAR('sfontl2'), MULTI_CHAR('sfontb0'), MULTI_CHAR('sfontb1'), MULTI_CHAR('sfontb2') }; static const u64 ffont_name[7] = { - 'ffont00', 'ffontl0', 'ffontl1', 'ffontl2', 'ffontb0', 'ffontb3', 'ffontb4' + MULTI_CHAR('ffont00'), MULTI_CHAR('ffontl0'), MULTI_CHAR('ffontl1'), MULTI_CHAR('ffontl2'), MULTI_CHAR('ffontb0'), MULTI_CHAR('ffontb3'), MULTI_CHAR('ffontb4') }; #else static const u64 sfont_name[7] = { - 'sfont00', 'sfontl0', 'sfontl1', 'sfontl2', 'sfontb0', 'sfontb1', 'sfontb2' + MULTI_CHAR('sfont00'), MULTI_CHAR('sfontl0'), MULTI_CHAR('sfontl1'), MULTI_CHAR('sfontl2'), MULTI_CHAR('sfontb0'), MULTI_CHAR('sfontb1'), MULTI_CHAR('sfontb2') }; static const u64 ffont_name[7] = { - 'ffont01', 'ffontl3', 'ffontl4', 'ffontl5', 'ffontb3', 'ffontb4', 'ffontb5' + MULTI_CHAR('ffont01'), MULTI_CHAR('ffontl3'), MULTI_CHAR('ffontl4'), MULTI_CHAR('ffontl5'), MULTI_CHAR('ffontb3'), MULTI_CHAR('ffontb4'), MULTI_CHAR('ffontb5') }; #endif for (int i = 0; i < 7; i++) { @@ -2315,8 +2315,8 @@ dMenu_Fmap2DTop_c::dMenu_Fmap2DTop_c(JKRExpHeap* i_heap, STControl* i_stick) { } setTitleNameString(0x3e0); - static const u64 cont_zt[5] = {'cont_zt', 'cont_zt1', 'cont_zt2', 'cont_zt3', 'cont_zt4'}; - static const u64 font_zt[5] = {'font_zt1', 'font_zt2', 'font_zt3', 'font_zt4', 'font_zt5'}; + static const u64 cont_zt[5] = {MULTI_CHAR('cont_zt'), MULTI_CHAR('cont_zt1'), MULTI_CHAR('cont_zt2'), MULTI_CHAR('cont_zt3'), MULTI_CHAR('cont_zt4')}; + static const u64 font_zt[5] = {MULTI_CHAR('font_zt1'), MULTI_CHAR('font_zt2'), MULTI_CHAR('font_zt3'), MULTI_CHAR('font_zt4'), MULTI_CHAR('font_zt5')}; for (int i = 0; i < 5; i++) { #if VERSION == VERSION_GCN_JPN static_cast(mpTitleScreen->search(cont_zt[i])) @@ -2332,11 +2332,11 @@ dMenu_Fmap2DTop_c::dMenu_Fmap2DTop_c(JKRExpHeap* i_heap, STControl* i_stick) { } setZButtonString(0x529, 0xff); #if PLATFORM_GCN - static const u64 cont_bt[5] = {'cont_bt1', 'cont_bt2', 'cont_bt3', 'cont_bt4', 'cont_bt'}; - static const u64 font_bt[5] = {'font_bt1', 'font_bt2', 'font_bt3', 'font_bt4', 'font_bt5'}; + static const u64 cont_bt[5] = {MULTI_CHAR('cont_bt1'), MULTI_CHAR('cont_bt2'), MULTI_CHAR('cont_bt3'), MULTI_CHAR('cont_bt4'), MULTI_CHAR('cont_bt')}; + static const u64 font_bt[5] = {MULTI_CHAR('font_bt1'), MULTI_CHAR('font_bt2'), MULTI_CHAR('font_bt3'), MULTI_CHAR('font_bt4'), MULTI_CHAR('font_bt5')}; #else - static const u64 cont_bt[5] = {'cont_bt1', 'cont_bt2', 'cont_bt3', 'cont_bt4', 'cont_bt8'}; - static const u64 font_bt[5] = {'font_bt1', 'font_bt2', 'font_bt3', 'font_bt4', 'font_bt5'}; + static const u64 cont_bt[5] = {MULTI_CHAR('cont_bt1'), MULTI_CHAR('cont_bt2'), MULTI_CHAR('cont_bt3'), MULTI_CHAR('cont_bt4'), MULTI_CHAR('cont_bt8')}; + static const u64 font_bt[5] = {MULTI_CHAR('font_bt1'), MULTI_CHAR('font_bt2'), MULTI_CHAR('font_bt3'), MULTI_CHAR('font_bt4'), MULTI_CHAR('font_bt5')}; #endif for (int i = 0; i < 5; i++) { #if VERSION == VERSION_GCN_JPN @@ -2353,8 +2353,8 @@ dMenu_Fmap2DTop_c::dMenu_Fmap2DTop_c(JKRExpHeap* i_heap, STControl* i_stick) { } setBButtonString(0x522, 0xff); - static const u64 cont_at[5] = {'cont_at', 'cont_at1', 'cont_at2', 'cont_at3', 'cont_at4'}; - static const u64 font_at[5] = {'font_at1', 'font_at2', 'font_at3', 'font_at4', 'font_at5'}; + static const u64 cont_at[5] = {MULTI_CHAR('cont_at'), MULTI_CHAR('cont_at1'), MULTI_CHAR('cont_at2'), MULTI_CHAR('cont_at3'), MULTI_CHAR('cont_at4')}; + static const u64 font_at[5] = {MULTI_CHAR('font_at1'), MULTI_CHAR('font_at2'), MULTI_CHAR('font_at3'), MULTI_CHAR('font_at4'), MULTI_CHAR('font_at5')}; for (int i = 0; i < 5; i++) { #if VERSION == VERSION_GCN_JPN static_cast(mpTitleScreen->search(cont_at[i])) @@ -2371,8 +2371,8 @@ dMenu_Fmap2DTop_c::dMenu_Fmap2DTop_c(JKRExpHeap* i_heap, STControl* i_stick) { setAButtonString(0x527, 0xff); #if PLATFORM_GCN - static const u64 juji_c[5] = {'juji_c00', 'juji_c01', 'juji_c02', 'juji_c03', 'juji_c04'}; - static const u64 fuji_c[5] = {'fuji_c00', 'fuji_c01', 'fuji_c02', 'fuji_c03', 'fuji_c04'}; + static const u64 juji_c[5] = {MULTI_CHAR('juji_c00'), MULTI_CHAR('juji_c01'), MULTI_CHAR('juji_c02'), MULTI_CHAR('juji_c03'), MULTI_CHAR('juji_c04')}; + static const u64 fuji_c[5] = {MULTI_CHAR('fuji_c00'), MULTI_CHAR('fuji_c01'), MULTI_CHAR('fuji_c02'), MULTI_CHAR('fuji_c03'), MULTI_CHAR('fuji_c04')}; for (int i = 0; i < 5; i++) { #if VERSION == VERSION_GCN_JPN static_cast(mpTitleScreen->search(juji_c[i])) @@ -2388,8 +2388,8 @@ dMenu_Fmap2DTop_c::dMenu_Fmap2DTop_c(JKRExpHeap* i_heap, STControl* i_stick) { } setCrossLRString(0x3f9); - static const u64 ast_c[5] = {'ast_00', 'ast_01', 'ast_02', 'ast_03', 'ast_04'}; - static const u64 fst_c[5] = {'fst_00', 'fst_01', 'fst_02', 'fst_03', 'fst_04'}; + static const u64 ast_c[5] = {MULTI_CHAR('ast_00'), MULTI_CHAR('ast_01'), MULTI_CHAR('ast_02'), MULTI_CHAR('ast_03'), MULTI_CHAR('ast_04')}; + static const u64 fst_c[5] = {MULTI_CHAR('fst_00'), MULTI_CHAR('fst_01'), MULTI_CHAR('fst_02'), MULTI_CHAR('fst_03'), MULTI_CHAR('fst_04')}; for (int i = 0; i < 5; i++) { #if VERSION == VERSION_GCN_JPN static_cast(mpTitleScreen->search(ast_c[i])) @@ -2574,28 +2574,28 @@ void dMenu_Fmap2DTop_c::btkAnimeLoop(J2DAnmTextureSRTKey* i_anm, f32 i_delta) { mAnmFrame = 0.0f; } - mpTitleScreen->search('spot_0')->setAnimation(i_anm); + mpTitleScreen->search(MULTI_CHAR('spot_0'))->setAnimation(i_anm); mpTitleScreen->animation(); } void dMenu_Fmap2DTop_c::setMoyaAlpha(u8 i_alpha) { - mpTitleScreen->search('spot_0')->setAlpha(i_alpha); + mpTitleScreen->search(MULTI_CHAR('spot_0'))->setAlpha(i_alpha); } void dMenu_Fmap2DTop_c::setTitleNameString(u32 param_0) { #if VERSION == VERSION_GCN_JPN static const u64 sfont_name[7] = { - 'sfont00', 'sfontl0', 'sfontl1', 'sfontl2', 'sfontb0', 'sfontb1', 'sfontb2' + MULTI_CHAR('sfont00'), MULTI_CHAR('sfontl0'), MULTI_CHAR('sfontl1'), MULTI_CHAR('sfontl2'), MULTI_CHAR('sfontb0'), MULTI_CHAR('sfontb1'), MULTI_CHAR('sfontb2') }; #define setTitleNameString_font_name sfont_name #elif PLATFORM_GCN static const u64 ffont_name[7] = { - 'ffont00', 'ffontl0', 'ffontl1', 'ffontl2', 'ffontb0', 'ffontb3', 'ffontb4' + MULTI_CHAR('ffont00'), MULTI_CHAR('ffontl0'), MULTI_CHAR('ffontl1'), MULTI_CHAR('ffontl2'), MULTI_CHAR('ffontb0'), MULTI_CHAR('ffontb3'), MULTI_CHAR('ffontb4') }; #define setTitleNameString_font_name ffont_name #else static const u64 ffont_name[7] = { - 'ffont01', 'ffontl3', 'ffontl4', 'ffontl5', 'ffontb3', 'ffontb4', 'ffontb5' + MULTI_CHAR('ffont01'), MULTI_CHAR('ffontl3'), MULTI_CHAR('ffontl4'), MULTI_CHAR('ffontl5'), MULTI_CHAR('ffontb3'), MULTI_CHAR('ffontb4'), MULTI_CHAR('ffontb5') }; #define setTitleNameString_font_name ffont_name #endif @@ -2616,10 +2616,10 @@ void dMenu_Fmap2DTop_c::setTitleNameString(u32 param_0) { void dMenu_Fmap2DTop_c::setAreaNameString(u32 param_0) { #if VERSION == VERSION_GCN_JPN - static const u64 iarea_name[3] = {'i_name_s', 'i_name', 'i_name1'}; + static const u64 iarea_name[3] = {MULTI_CHAR('i_name_s'), MULTI_CHAR('i_name'), MULTI_CHAR('i_name1')}; #define setAreaNameString_area_name iarea_name #else - static const u64 farea_name[3] = {'f_name_1', 'f_name3', 'f_name2'}; + static const u64 farea_name[3] = {MULTI_CHAR('f_name_1'), MULTI_CHAR('f_name3'), MULTI_CHAR('f_name2')}; #define setAreaNameString_area_name farea_name #endif for (int i = 0; i < 3; i++) { @@ -2643,10 +2643,10 @@ void dMenu_Fmap2DTop_c::setZButtonString(u32 param_0, u8 i_alpha) { } #if VERSION == VERSION_GCN_JPN - static const u64 cont_zt[5] = {'cont_zt', 'cont_zt1', 'cont_zt2', 'cont_zt3', 'cont_zt4'}; + static const u64 cont_zt[5] = {MULTI_CHAR('cont_zt'), MULTI_CHAR('cont_zt1'), MULTI_CHAR('cont_zt2'), MULTI_CHAR('cont_zt3'), MULTI_CHAR('cont_zt4')}; #define setZButtonString_font_zt cont_zt #else - static const u64 font_zt[5] = {'font_zt1', 'font_zt2', 'font_zt3', 'font_zt4', 'font_zt5'}; + static const u64 font_zt[5] = {MULTI_CHAR('font_zt1'), MULTI_CHAR('font_zt2'), MULTI_CHAR('font_zt3'), MULTI_CHAR('font_zt4'), MULTI_CHAR('font_zt5')}; #define setZButtonString_font_zt font_zt #endif if (param_0 == 0 || !isWarpAccept()) { @@ -2677,10 +2677,10 @@ void dMenu_Fmap2DTop_c::setZButtonString(u32 param_0, u8 i_alpha) { void dMenu_Fmap2DTop_c::setBButtonString(u32 param_0, u8 i_alpha) { #if VERSION == VERSION_GCN_JPN - static const u64 cont_bt[5] = {'cont_bt1', 'cont_bt2', 'cont_bt3', 'cont_bt4', 'cont_bt'}; + static const u64 cont_bt[5] = {MULTI_CHAR('cont_bt1'), MULTI_CHAR('cont_bt2'), MULTI_CHAR('cont_bt3'), MULTI_CHAR('cont_bt4'), MULTI_CHAR('cont_bt')}; #define setBButtonString_font_bt cont_bt #else - static const u64 font_bt[5] = {'font_bt1', 'font_bt2', 'font_bt3', 'font_bt4', 'font_bt5'}; + static const u64 font_bt[5] = {MULTI_CHAR('font_bt1'), MULTI_CHAR('font_bt2'), MULTI_CHAR('font_bt3'), MULTI_CHAR('font_bt4'), MULTI_CHAR('font_bt5')}; #define setBButtonString_font_bt font_bt #endif if (param_0 == 0) { @@ -2703,10 +2703,10 @@ void dMenu_Fmap2DTop_c::setBButtonString(u32 param_0, u8 i_alpha) { void dMenu_Fmap2DTop_c::setAButtonString(u32 param_0, u8 i_alpha) { #if VERSION == VERSION_GCN_JPN - static const u64 cont_at[5] = {'cont_at', 'cont_at1', 'cont_at2', 'cont_at3', 'cont_at4'}; + static const u64 cont_at[5] = {MULTI_CHAR('cont_at'), MULTI_CHAR('cont_at1'), MULTI_CHAR('cont_at2'), MULTI_CHAR('cont_at3'), MULTI_CHAR('cont_at4')}; #define setAButtonString_font_at cont_at #else - static const u64 font_at[5] = {'font_at1', 'font_at2', 'font_at3', 'font_at4', 'font_at5'}; + static const u64 font_at[5] = {MULTI_CHAR('font_at1'), MULTI_CHAR('font_at2'), MULTI_CHAR('font_at3'), MULTI_CHAR('font_at4'), MULTI_CHAR('font_at5')}; #define setAButtonString_font_at font_at #endif if (param_0 == 0) { @@ -2730,23 +2730,23 @@ void dMenu_Fmap2DTop_c::setAButtonString(u32 param_0, u8 i_alpha) { void dMenu_Fmap2DTop_c::setCrossLRString(u32 param_0) { #if PLATFORM_GCN || (VERSION == VERSION_SHIELD) #if VERSION == VERSION_GCN_JPN - static const u64 juji_c[5] = {'juji_c00', 'juji_c01', 'juji_c02', 'juji_c03', 'juji_c04'}; + static const u64 juji_c[5] = {MULTI_CHAR('juji_c00'), MULTI_CHAR('juji_c01'), MULTI_CHAR('juji_c02'), MULTI_CHAR('juji_c03'), MULTI_CHAR('juji_c04')}; #else - static const u64 juji_c[5] = {'fuji_c00', 'fuji_c01', 'fuji_c02', 'fuji_c03', 'fuji_c04'}; + static const u64 juji_c[5] = {MULTI_CHAR('fuji_c00'), MULTI_CHAR('fuji_c01'), MULTI_CHAR('fuji_c02'), MULTI_CHAR('fuji_c03'), MULTI_CHAR('fuji_c04')}; #endif if (param_0 == 0) { for (int i = 0; i < 5; i++) { J2DTextBox* text_box = static_cast(mpTitleScreen->search(juji_c[i])); strcpy(text_box->getStringPtr(), ""); } - mpTitleScreen->search('juy_sha0')->show(); + mpTitleScreen->search(MULTI_CHAR('juy_sha0'))->show(); mAlphaDpad = 1; } else { for (int i = 0; i < 5; i++) { J2DTextBox* text_box = static_cast(mpTitleScreen->search(juji_c[i])); dMeter2Info_getStringKanji(param_0, text_box->getStringPtr(), NULL); } - mpTitleScreen->search('juy_sha0')->show(); + mpTitleScreen->search(MULTI_CHAR('juy_sha0'))->show(); mAlphaDpad = 2; } #endif @@ -2755,23 +2755,23 @@ void dMenu_Fmap2DTop_c::setCrossLRString(u32 param_0) { void dMenu_Fmap2DTop_c::set3DStickString(u32 param_0) { #if PLATFORM_GCN || (VERSION == VERSION_SHIELD) #if VERSION == VERSION_GCN_JPN - static const u64 ast_c[5] = {'ast_00', 'ast_01', 'ast_02', 'ast_03', 'ast_04'}; + static const u64 ast_c[5] = {MULTI_CHAR('ast_00'), MULTI_CHAR('ast_01'), MULTI_CHAR('ast_02'), MULTI_CHAR('ast_03'), MULTI_CHAR('ast_04')}; #else - static const u64 ast_c[5] = {'fst_00', 'fst_01', 'fst_02', 'fst_03', 'fst_04'}; + static const u64 ast_c[5] = {MULTI_CHAR('fst_00'), MULTI_CHAR('fst_01'), MULTI_CHAR('fst_02'), MULTI_CHAR('fst_03'), MULTI_CHAR('fst_04')}; #endif if (param_0 == 0) { for (int i = 0; i < 5; i++) { J2DTextBox* text_box = static_cast(mpTitleScreen->search(ast_c[i])); strcpy(text_box->getStringPtr(), ""); } - mpTitleScreen->search('as_sha0')->show(); + mpTitleScreen->search(MULTI_CHAR('as_sha0'))->show(); mAlphaAnalogStick = 1; } else { for (int i = 0; i < 5; i++) { J2DTextBox* text_box = static_cast(mpTitleScreen->search(ast_c[i])); dMeter2Info_getStringKanji(param_0, text_box->getStringPtr(), NULL); } - mpTitleScreen->search('as_sha0')->show(); + mpTitleScreen->search(MULTI_CHAR('as_sha0'))->show(); mAlphaAnalogStick = 2; } #endif diff --git a/src/d/d_menu_insect.cpp b/src/d/d_menu_insect.cpp index c8f8cc6d51..2e9b224217 100644 --- a/src/d/d_menu_insect.cpp +++ b/src/d/d_menu_insect.cpp @@ -440,20 +440,20 @@ void dMenu_Insect_c::explain_close_move() { void dMenu_Insect_c::screenSetBase() { static const u64 insect_tag[MAX_INSECT_NUM] = { - 'ari_os', 'ari_ms', 'kag_os', 'kag_ms', 'kab_os', 'kab_ms', 'kam_os', 'kam_mes', - 'kuwa_os', 'kuwa_mes', 'dan_os', 'dan_mes', 'cho_os', 'cho_ms', 'tent_os', 'tent_mes', - 'kata_os', 'kata_mes', 'nana_os', 'nana_mes', 'bat_os', 'bat_mes', 'tonb_os', 'tonb_mes', + MULTI_CHAR('ari_os'), MULTI_CHAR('ari_ms'), MULTI_CHAR('kag_os'), MULTI_CHAR('kag_ms'), MULTI_CHAR('kab_os'), MULTI_CHAR('kab_ms'), MULTI_CHAR('kam_os'), MULTI_CHAR('kam_mes'), + MULTI_CHAR('kuwa_os'), MULTI_CHAR('kuwa_mes'), MULTI_CHAR('dan_os'), MULTI_CHAR('dan_mes'), MULTI_CHAR('cho_os'), MULTI_CHAR('cho_ms'), MULTI_CHAR('tent_os'), MULTI_CHAR('tent_mes'), + MULTI_CHAR('kata_os'), MULTI_CHAR('kata_mes'), MULTI_CHAR('nana_os'), MULTI_CHAR('nana_mes'), MULTI_CHAR('bat_os'), MULTI_CHAR('bat_mes'), MULTI_CHAR('tonb_os'), MULTI_CHAR('tonb_mes'), }; static const u64 ageha_tag[MAX_INSECT_NUM] = { - 'ageha00', 'ageha01', 'ageha02', 'ageha03', 'ageha04', 'ageha05', 'ageha06', 'ageha07', - 'ageha08', 'ageha09', 'ageha10', 'ageha11', 'ageha12', 'ageha13', 'ageha14', 'ageha15', - 'ageha16', 'ageha17', 'ageha18', 'ageha19', 'ageha20', 'ageha21', 'ageha22', 'ageha23', + MULTI_CHAR('ageha00'), MULTI_CHAR('ageha01'), MULTI_CHAR('ageha02'), MULTI_CHAR('ageha03'), MULTI_CHAR('ageha04'), MULTI_CHAR('ageha05'), MULTI_CHAR('ageha06'), MULTI_CHAR('ageha07'), + MULTI_CHAR('ageha08'), MULTI_CHAR('ageha09'), MULTI_CHAR('ageha10'), MULTI_CHAR('ageha11'), MULTI_CHAR('ageha12'), MULTI_CHAR('ageha13'), MULTI_CHAR('ageha14'), MULTI_CHAR('ageha15'), + MULTI_CHAR('ageha16'), MULTI_CHAR('ageha17'), MULTI_CHAR('ageha18'), MULTI_CHAR('ageha19'), MULTI_CHAR('ageha20'), MULTI_CHAR('ageha21'), MULTI_CHAR('ageha22'), MULTI_CHAR('ageha23'), }; mpScreen = new J2DScreen(); mpScreen->setPriority("zelda_gold_insects.blo", 0x20000, mpArchive); dPaneClass_showNullPane(mpScreen); - mpParent = new CPaneMgr(mpScreen, 'n_all', 2, NULL); + mpParent = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 2, NULL); mpParent->setAlphaRate(0.0f); for (int i = 0; i < MAX_INSECT_NUM; i++) { mpINSParent[i] = new CPaneMgr(mpScreen, insect_tag[i], 0, NULL); @@ -474,11 +474,11 @@ void dMenu_Insect_c::screenSetBase() { } } #if VERSION == VERSION_GCN_JPN - J2DTextBox* textBox = (J2DTextBox*)mpScreen->search('t_t00'); - mpScreen->search('f_t00')->hide(); + J2DTextBox* textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('t_t00')); + mpScreen->search(MULTI_CHAR('f_t00'))->hide(); #else - J2DTextBox* textBox = (J2DTextBox*)mpScreen->search('f_t00'); - mpScreen->search('t_t00')->hide(); + J2DTextBox* textBox = (J2DTextBox*)mpScreen->search(MULTI_CHAR('f_t00')); + mpScreen->search(MULTI_CHAR('t_t00'))->hide(); #endif textBox->setFont(mDoExt_getSubFont()); textBox->setString(0x200, ""); @@ -489,27 +489,27 @@ void dMenu_Insect_c::screenSetExplain() { mpExpScreen = new J2DScreen(); mpExpScreen->setPriority("zelda_gold_insects_info.blo", 0x20000, mpArchive); dPaneClass_showNullPane(mpExpScreen); - mpExpParent = new CPaneMgr(mpExpScreen, 'n_all', 2, NULL); + mpExpParent = new CPaneMgr(mpExpScreen, MULTI_CHAR('n_all'), 2, NULL); mpExpParent->setAlphaRate(0.0f); - mpExpSubWin[0] = new CPaneMgr(mpExpScreen, 'in_win_n', 0, NULL); - mpExpSubWin[1] = new CPaneMgr(mpExpScreen, 'w_d_mo_n', 0, NULL); + mpExpSubWin[0] = new CPaneMgr(mpExpScreen, MULTI_CHAR('in_win_n'), 0, NULL); + mpExpSubWin[1] = new CPaneMgr(mpExpScreen, MULTI_CHAR('w_d_mo_n'), 0, NULL); if (field_0xf6 == 0) { mpExpSubWin[1]->hide(); } #if VERSION == VERSION_GCN_JPN - mpInfoText = new CPaneMgr(mpExpScreen, 'mg_3line', 0, NULL); - mpExpScreen->search('n_e4line')->hide(); - field_0x5c = (J2DTextBox*)mpExpScreen->search('w_msg_jp'); - mpExpScreen->search('ms_for_2')->hide(); + mpInfoText = new CPaneMgr(mpExpScreen, MULTI_CHAR('mg_3line'), 0, NULL); + mpExpScreen->search(MULTI_CHAR('n_e4line'))->hide(); + field_0x5c = (J2DTextBox*)mpExpScreen->search(MULTI_CHAR('w_msg_jp')); + mpExpScreen->search(MULTI_CHAR('ms_for_2'))->hide(); #else - mpInfoText = new CPaneMgr(mpExpScreen, 'mg_e4lin', 0, NULL); - mpExpScreen->search('n_3line')->hide(); - field_0x5c = (J2DTextBox*)mpExpScreen->search('ms_for_2'); - mpExpScreen->search('w_msg_jp')->hide(); + mpInfoText = new CPaneMgr(mpExpScreen, MULTI_CHAR('mg_e4lin'), 0, NULL); + mpExpScreen->search(MULTI_CHAR('n_3line'))->hide(); + field_0x5c = (J2DTextBox*)mpExpScreen->search(MULTI_CHAR('ms_for_2')); + mpExpScreen->search(MULTI_CHAR('w_msg_jp'))->hide(); #endif - mpExpScreen->search('ms_for_3')->hide(); - field_0x54[0] = (J2DPicture*)mpExpScreen->search('insects'); - field_0x54[1] = (J2DPicture*)mpExpScreen->search('insectss'); + mpExpScreen->search(MULTI_CHAR('ms_for_3'))->hide(); + field_0x54[0] = (J2DPicture*)mpExpScreen->search(MULTI_CHAR('insects')); + field_0x54[1] = (J2DPicture*)mpExpScreen->search(MULTI_CHAR('insectss')); J2DTextBox* textBox = (J2DTextBox*)mpInfoText->getPanePtr(); textBox->setFont(mDoExt_getMesgFont()); J2DTextBox* textBox2 = (J2DTextBox*)mpInfoText->getPanePtr(); @@ -520,10 +520,10 @@ void dMenu_Insect_c::screenSetExplain() { void dMenu_Insect_c::screenSetDoIcon() { static const u64 text_a_tag[5] = { - 'atext1_1', 'atext1_2', 'atext1_3', 'atext1_4', 'atext1_5', + MULTI_CHAR('atext1_1'), MULTI_CHAR('atext1_2'), MULTI_CHAR('atext1_3'), MULTI_CHAR('atext1_4'), MULTI_CHAR('atext1_5'), }; static const u64 text_b_tag[5] = { - 'btext1_1', 'btext1_2', 'btext1_3', 'btext1_4', 'btext1_5', + MULTI_CHAR('btext1_1'), MULTI_CHAR('btext1_2'), MULTI_CHAR('btext1_3'), MULTI_CHAR('btext1_4'), MULTI_CHAR('btext1_5'), }; mpIconScreen = new J2DScreen(); diff --git a/src/d/d_menu_item_explain.cpp b/src/d/d_menu_item_explain.cpp index b682d49351..a710bd8aba 100644 --- a/src/d/d_menu_item_explain.cpp +++ b/src/d/d_menu_item_explain.cpp @@ -41,17 +41,17 @@ static moveFunc move_process[] = { dMenu_ItemExplain_c::dMenu_ItemExplain_c(JKRExpHeap* i_heap, JKRArchive* i_archive, STControl* i_stick, bool param_3) { static const u64 name_tag[4] = { - 'item_n04', - 'item_n05', - 'item_n06', - 'item_n07', + MULTI_CHAR('item_n04'), + MULTI_CHAR('item_n05'), + MULTI_CHAR('item_n06'), + MULTI_CHAR('item_n07'), }; static const u64 fame_tag[4] = { - 'f_item_1', - 'f_item_2', - 'f_item_3', - 'f_item_4', + MULTI_CHAR('f_item_1'), + MULTI_CHAR('f_item_2'), + MULTI_CHAR('f_item_3'), + MULTI_CHAR('f_item_4'), }; mpHeap = i_heap; @@ -96,18 +96,18 @@ dMenu_ItemExplain_c::dMenu_ItemExplain_c(JKRExpHeap* i_heap, JKRArchive* i_archi mpKanteraMeter = new dKantera_icon_c(); mpInfoScreen = new J2DScreen(); mpInfoScreen->setPriority("zelda_item_screen_info.blo", 0x20000, mpArchive); - mpParent[0] = new CPaneMgr(mpInfoScreen, 'n_all', 2, NULL); + mpParent[0] = new CPaneMgr(mpInfoScreen, MULTI_CHAR('n_all'), 2, NULL); mpParent[1] = NULL; - mpLabel = new CPaneMgr(mpInfoScreen, 'label_n', 0, NULL); + mpLabel = new CPaneMgr(mpInfoScreen, MULTI_CHAR('label_n'), 0, NULL); mDescAlpha = 0.0f; field_0x78 = 0; mAlphaRatio = 201.0f; #if VERSION == VERSION_GCN_JPN - mpInfoText = new CPaneMgr(mpInfoScreen, 'i_text4', 0, NULL); - mpInfoScreen->search('i_text1')->hide(); + mpInfoText = new CPaneMgr(mpInfoScreen, MULTI_CHAR('i_text4'), 0, NULL); + mpInfoScreen->search(MULTI_CHAR('i_text1'))->hide(); #else - mpInfoText = new CPaneMgr(mpInfoScreen, 'i_text1', 0, NULL); - mpInfoScreen->search('i_text4')->hide(); + mpInfoText = new CPaneMgr(mpInfoScreen, MULTI_CHAR('i_text1'), 0, NULL); + mpInfoScreen->search(MULTI_CHAR('i_text4'))->hide(); #endif ((J2DTextBox*)(mpInfoText->getPanePtr()))->setFont(mDoExt_getMesgFont()); ((J2DTextBox*)(mpInfoText->getPanePtr()))->setString(0x200, ""); @@ -123,25 +123,25 @@ dMenu_ItemExplain_c::dMenu_ItemExplain_c(JKRExpHeap* i_heap, JKRArchive* i_archi ((J2DTextBox*)(mpNameText[i]->getPanePtr()))->setFont(mDoExt_getMesgFont()); ((J2DTextBox*)(mpNameText[i]->getPanePtr()))->setString(0x20, ""); } - mpInfoIcon = new CPaneMgr(mpInfoScreen, 'i_icon_p', 0, NULL); + mpInfoIcon = new CPaneMgr(mpInfoScreen, MULTI_CHAR('i_icon_p'), 0, NULL); for (int i = 0; i < 4; i++) { mpExpItemTex[i] = (ResTIMG*)mpHeap->alloc(0xC00, 0x20); } mpExpItemPane[0] = new J2DPicture( - 'i_icon_1', + MULTI_CHAR('i_icon_1'), JGeometry::TBox2(0.0f, 0.0f, mpInfoIcon->getInitSizeX(), mpInfoIcon->getInitSizeY()), ((J2DPicture*)(mpInfoIcon->getPanePtr()))->getTexture(0)->getTexInfo(), NULL); mpExpItemPane[0]->setBasePosition(J2DBasePosition_4); mpInfoIcon->getPanePtr()->appendChild(mpExpItemPane[0]); mpExpItemPane[1] = new J2DPicture( - 'i_icon_2', + MULTI_CHAR('i_icon_2'), JGeometry::TBox2(0.0f, 0.0f, mpInfoIcon->getInitSizeX(), mpInfoIcon->getInitSizeY()), ((J2DPicture*)(mpInfoIcon->getPanePtr()))->getTexture(0)->getTexInfo(), NULL); mpExpItemPane[1]->setBasePosition(J2DBasePosition_4); mpInfoIcon->getPanePtr()->appendChild(mpExpItemPane[1]); mpExpItemPane[2] = new J2DPicture( - 'i_icon_3', + MULTI_CHAR('i_icon_3'), JGeometry::TBox2(0.0f, 0.0f, mpInfoIcon->getInitSizeX(), mpInfoIcon->getInitSizeY()), ((J2DPicture*)(mpInfoIcon->getPanePtr()))->getTexture(0)->getTexInfo(), NULL); mpExpItemPane[2]->setBasePosition(J2DBasePosition_4); @@ -151,7 +151,7 @@ dMenu_ItemExplain_c::dMenu_ItemExplain_c(JKRExpHeap* i_heap, JKRArchive* i_archi 'TIMG', dMeter2Info_getNumberTextureName(0)); for (int i = 0; i < 3; i++) { mpItemNumTex[i] = new J2DPicture(texResource); - mpInfoScreen->search('info_n1')->appendChild(mpItemNumTex[i]); + mpInfoScreen->search(MULTI_CHAR('info_n1'))->appendChild(mpItemNumTex[i]); mpItemNumTex[i]->move(i * 16.0f + (mpInfoIcon->getPosX() + mpInfoIcon->getSizeX() * 0.5f), mpInfoIcon->getPosY() + mpInfoIcon->getSizeY() - 3.0f); mpItemNumTex[i]->resize(16.0f, 16.0f); @@ -395,7 +395,7 @@ void dMenu_ItemExplain_c::open_init() { } } setNumber(); - mpInfoScreen->search('i_i_back')->show(); + mpInfoScreen->search(MULTI_CHAR('i_i_back'))->show(); field_0xe6 = 0; } else { mpInfoIcon->hide(); @@ -403,7 +403,7 @@ void dMenu_ItemExplain_c::open_init() { mpExpItemPane[i]->hide(); } setNumber(); - mpInfoScreen->search('i_i_back')->hide(); + mpInfoScreen->search(MULTI_CHAR('i_i_back'))->hide(); field_0xe6 = 1; } if (mpArrow != NULL) { diff --git a/src/d/d_menu_letter.cpp b/src/d/d_menu_letter.cpp index faf96802cb..a82082677d 100644 --- a/src/d/d_menu_letter.cpp +++ b/src/d/d_menu_letter.cpp @@ -428,11 +428,11 @@ void dMenu_Letter_c::wait_move() { if (mProcess == 1 || mProcess == 2) { #if VERSION == VERSION_GCN_JPN - J2DTextBox* textBox = (J2DTextBox*)mpBaseScreen->search('t_t00'); - mpBaseScreen->search('f_t_00')->hide(); + J2DTextBox* textBox = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('t_t00')); + mpBaseScreen->search(MULTI_CHAR('f_t_00'))->hide(); #else - J2DTextBox* textBox = (J2DTextBox*)mpBaseScreen->search('f_t_00'); - mpBaseScreen->search('t_t00')->hide(); + J2DTextBox* textBox = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('f_t_00')); + mpBaseScreen->search(MULTI_CHAR('t_t00'))->hide(); #endif dComIfGp_setMessageCountNumber(field_0x374 + (field_0x36f + 1) * 100); mpString->getString(0x4d6, textBox, NULL, NULL, NULL, 0); @@ -550,7 +550,7 @@ void dMenu_Letter_c::read_move_init() { setBButtonString(0x3f9); } CPaneMgr paneMgr; - J2DPane* pane = mpLetterScreen[0]->search('set_ya_n'); + J2DPane* pane = mpLetterScreen[0]->search(MULTI_CHAR('set_ya_n')); Vec pos = paneMgr.getGlobalVtxCenter(pane, false, 0); mpArrow->setPos(pos.x, pos.y); } else { @@ -591,7 +591,7 @@ void dMenu_Letter_c::read_move_move() { mpArrow->arwAnimeMove(); } CPaneMgr paneMgr; - J2DPane* pane = mpLetterScreen[0]->search('set_ya_n'); + J2DPane* pane = mpLetterScreen[0]->search(MULTI_CHAR('set_ya_n')); Vec pos = paneMgr.getGlobalVtxCenter(pane, false, 0); mpArrow->setPos(pos.x, pos.y); } @@ -704,51 +704,51 @@ void dMenu_Letter_c::read_close_move() { void dMenu_Letter_c::screenSetMenu() { static const u64 tag_sub0[6] = { - 'menu_t0s', 'menu_t1s', 'menu_t2s', 'menu_t3s', 'menu_t4s', 'menu_t5s', + MULTI_CHAR('menu_t0s'), MULTI_CHAR('menu_t1s'), MULTI_CHAR('menu_t2s'), MULTI_CHAR('menu_t3s'), MULTI_CHAR('menu_t4s'), MULTI_CHAR('menu_t5s'), }; static const u64 tag_sub1[6] = { - 'menu_t0', 'menu_t1', 'menu_t2', 'menu_t3', 'menu_t4', 'menu_t5', + MULTI_CHAR('menu_t0'), MULTI_CHAR('menu_t1'), MULTI_CHAR('menu_t2'), MULTI_CHAR('menu_t3'), MULTI_CHAR('menu_t4'), MULTI_CHAR('menu_t5'), }; static const u64 tag_name0[6] = { - 'menu_t6s', 'menu_f7s', 'menu_f8s', 'menu_t9s', 'menu_10s', 'menu_11s', + MULTI_CHAR('menu_t6s'), MULTI_CHAR('menu_f7s'), MULTI_CHAR('menu_f8s'), MULTI_CHAR('menu_t9s'), MULTI_CHAR('menu_10s'), MULTI_CHAR('menu_11s'), }; static const u64 tag_name1[6] = { - 'menu_f6', 'menu_f7', 'menu_t8', 'menu_t9', 'menu_t10', 'menu_t11', + MULTI_CHAR('menu_f6'), MULTI_CHAR('menu_f7'), MULTI_CHAR('menu_t8'), MULTI_CHAR('menu_t9'), MULTI_CHAR('menu_t10'), MULTI_CHAR('menu_t11'), }; static const u64 ftag_sub0[6] = { - 'fenu_t0s', 'fenu_t1s', 'fenu_t2s', 'fenu_t3s', 'fenu_t4s', 'fenu_t5s', + MULTI_CHAR('fenu_t0s'), MULTI_CHAR('fenu_t1s'), MULTI_CHAR('fenu_t2s'), MULTI_CHAR('fenu_t3s'), MULTI_CHAR('fenu_t4s'), MULTI_CHAR('fenu_t5s'), }; static const u64 ftag_sub1[6] = { - 'fenu_t0', 'fenu_t1', 'fenu_t2', 'fenu_t3', 'fenu_t4', 'fenu_t5', + MULTI_CHAR('fenu_t0'), MULTI_CHAR('fenu_t1'), MULTI_CHAR('fenu_t2'), MULTI_CHAR('fenu_t3'), MULTI_CHAR('fenu_t4'), MULTI_CHAR('fenu_t5'), }; static const u64 ftag_name0[6] = { - 'fenu_t6s', 'fenu_t7s', 'fenu_f8s', 'fenu_t9s', 'fenu_10s', 'fenu_11s', + MULTI_CHAR('fenu_t6s'), MULTI_CHAR('fenu_t7s'), MULTI_CHAR('fenu_f8s'), MULTI_CHAR('fenu_t9s'), MULTI_CHAR('fenu_10s'), MULTI_CHAR('fenu_11s'), }; static const u64 ftag_name1[6] = { - 'fenu_t6', 'fenu_t7', 'fenu_t8', 'fenu_t9', 'fenu_t10', 'fenu_t11', + MULTI_CHAR('fenu_t6'), MULTI_CHAR('fenu_t7'), MULTI_CHAR('fenu_t8'), MULTI_CHAR('fenu_t9'), MULTI_CHAR('fenu_t10'), MULTI_CHAR('fenu_t11'), }; static const u64 tag_letter[6] = { - 'let_00_n', 'let_01_n', 'let_02_n', 'let_03_n', 'let_04_n', 'let_05_n', + MULTI_CHAR('let_00_n'), MULTI_CHAR('let_01_n'), MULTI_CHAR('let_02_n'), MULTI_CHAR('let_03_n'), MULTI_CHAR('let_04_n'), MULTI_CHAR('let_05_n'), }; static const u64 tag_frame[6] = { - 'flame_00', 'flame_01', 'flame_02', 'flame_03', 'flame_04', 'flame_05', + MULTI_CHAR('flame_00'), MULTI_CHAR('flame_01'), MULTI_CHAR('flame_02'), MULTI_CHAR('flame_03'), MULTI_CHAR('flame_04'), MULTI_CHAR('flame_05'), }; static const u64 tag_menu0[6] = { #if VERSION == VERSION_GCN_JPN - 'menu_t0', 'menu_t1', 'menu_t2', 'menu_t3', 'menu_t4', 'menu_t5', + MULTI_CHAR('menu_t0'), MULTI_CHAR('menu_t1'), MULTI_CHAR('menu_t2'), MULTI_CHAR('menu_t3'), MULTI_CHAR('menu_t4'), MULTI_CHAR('menu_t5'), #else - 'fenu_t0', 'fenu_t1', 'fenu_t2', 'fenu_t3', 'fenu_t4', 'fenu_t5', + MULTI_CHAR('fenu_t0'), MULTI_CHAR('fenu_t1'), MULTI_CHAR('fenu_t2'), MULTI_CHAR('fenu_t3'), MULTI_CHAR('fenu_t4'), MULTI_CHAR('fenu_t5'), #endif }; static const u64 tag_menu1[6] = { #if VERSION == VERSION_GCN_JPN - 'menu_f6', 'menu_f7', 'menu_t8', 'menu_t9', 'menu_t10', 'menu_t11', + MULTI_CHAR('menu_f6'), MULTI_CHAR('menu_f7'), MULTI_CHAR('menu_t8'), MULTI_CHAR('menu_t9'), MULTI_CHAR('menu_t10'), MULTI_CHAR('menu_t11'), #else - 'fenu_t6', 'fenu_t7', 'fenu_t8', 'fenu_t9', 'fenu_t10', 'fenu_t11', + MULTI_CHAR('fenu_t6'), MULTI_CHAR('fenu_t7'), MULTI_CHAR('fenu_t8'), MULTI_CHAR('fenu_t9'), MULTI_CHAR('fenu_t10'), MULTI_CHAR('fenu_t11'), #endif }; static const u64 tag_midoku[6] = { - 'midoku_0', 'midoku_1', 'midoku_2', 'midoku_3', 'midoku_4', 'midoku_5', + MULTI_CHAR('midoku_0'), MULTI_CHAR('midoku_1'), MULTI_CHAR('midoku_2'), MULTI_CHAR('midoku_3'), MULTI_CHAR('midoku_4'), MULTI_CHAR('midoku_5'), }; mpMenuScreen = new J2DScreen(); @@ -756,7 +756,7 @@ void dMenu_Letter_c::screenSetMenu() { bool fg = mpMenuScreen->setPriority("zelda_letter_select_6menu.blo", 0x20000, mpArchive); JUT_ASSERT(1156, fg != false); dPaneClass_showNullPane(mpMenuScreen); - mpParent[0] = new CPaneMgr(mpMenuScreen, 'n_all', 2, NULL); + mpParent[0] = new CPaneMgr(mpMenuScreen, MULTI_CHAR('n_all'), 2, NULL); JUT_ASSERT(1161, mpParent[0] != NULL); mpParent[0]->setAlphaRate(0.0f); for (int i = 0; i < 6; i++) { @@ -828,7 +828,7 @@ void dMenu_Letter_c::screenSetMenu() { fg = mpMenuDMYScreen->setPriority("zelda_letter_select_6menu.blo", 0x20000, mpArchive); JUT_ASSERT(1280, fg != false); dPaneClass_showNullPane(mpMenuDMYScreen); - mpDMYParent = new CPaneMgr(mpMenuDMYScreen, 'n_all', 2, NULL); + mpDMYParent = new CPaneMgr(mpMenuDMYScreen, MULTI_CHAR('n_all'), 2, NULL); JUT_ASSERT(1285, mpDMYParent != NULL); for (int i = 0; i < 6; i++) { #if VERSION == VERSION_GCN_JPN @@ -866,15 +866,15 @@ void dMenu_Letter_c::screenSetMenu() { void dMenu_Letter_c::screenSetBase() { static const u64 tag_pip[9] = { - 'pi_00_n', 'pi_01_n', 'pi_02_n', 'pi_03_n', 'pi_04_n', - 'pi_05_n', 'pi_06_n', 'pi_07_n', 'pi_08_n', + MULTI_CHAR('pi_00_n'), MULTI_CHAR('pi_01_n'), MULTI_CHAR('pi_02_n'), MULTI_CHAR('pi_03_n'), MULTI_CHAR('pi_04_n'), + MULTI_CHAR('pi_05_n'), MULTI_CHAR('pi_06_n'), MULTI_CHAR('pi_07_n'), MULTI_CHAR('pi_08_n'), }; static const u64 tag_pil[9] = { - 'pi_l_00', 'pi_l_01', 'pi_l_02', 'pi_l_03', 'pi_l_04', - 'pi_l_05', 'pi_l_06', 'pi_l_07', 'pi_l_08', + MULTI_CHAR('pi_l_00'), MULTI_CHAR('pi_l_01'), MULTI_CHAR('pi_l_02'), MULTI_CHAR('pi_l_03'), MULTI_CHAR('pi_l_04'), + MULTI_CHAR('pi_l_05'), MULTI_CHAR('pi_l_06'), MULTI_CHAR('pi_l_07'), MULTI_CHAR('pi_l_08'), }; static const u64 tag_pii[9] = { - 'pi_00', 'pi_01', 'pi_02', 'pi_03', 'pi_04', 'pi_05', 'pi_06', 'pi_07', 'pi_08', + MULTI_CHAR('pi_00'), MULTI_CHAR('pi_01'), MULTI_CHAR('pi_02'), MULTI_CHAR('pi_03'), MULTI_CHAR('pi_04'), MULTI_CHAR('pi_05'), MULTI_CHAR('pi_06'), MULTI_CHAR('pi_07'), MULTI_CHAR('pi_08'), }; mpBaseScreen = new J2DScreen(); @@ -882,39 +882,39 @@ void dMenu_Letter_c::screenSetBase() { bool fg = mpBaseScreen->setPriority("zelda_letter_select_base.blo", 0x20000, mpArchive); JUT_ASSERT(1361, fg != false); dPaneClass_showNullPane(mpBaseScreen); - mpBaseScreen->search('wi_btn_n')->hide(); - mpParent[1] = new CPaneMgr(mpBaseScreen, 'n_all', 2, NULL); + mpBaseScreen->search(MULTI_CHAR('wi_btn_n'))->hide(); + mpParent[1] = new CPaneMgr(mpBaseScreen, MULTI_CHAR('n_all'), 2, NULL); JUT_ASSERT(1372, mpParent[1] != NULL); mpParent[1]->setAlphaRate(0.0f); #if VERSION == VERSION_GCN_JPN - J2DTextBox* piVar9 = (J2DTextBox*)mpBaseScreen->search('t_t00'); - mpBaseScreen->search('f_t_00')->hide(); + J2DTextBox* piVar9 = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('t_t00')); + mpBaseScreen->search(MULTI_CHAR('f_t_00'))->hide(); #else - J2DTextBox* piVar9 = (J2DTextBox*)mpBaseScreen->search('f_t_00'); - mpBaseScreen->search('t_t00')->hide(); + J2DTextBox* piVar9 = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('f_t_00')); + mpBaseScreen->search(MULTI_CHAR('t_t00'))->hide(); #endif piVar9->setString(0x40, ""); piVar9->setFont(mDoExt_getSubFont()); dComIfGp_setMessageCountNumber(field_0x374 + (field_0x36f + 1) * 100); mpString->getString(0x4d6, piVar9, NULL, NULL, NULL, 0); #if VERSION == VERSION_GCN_JPN - J2DTextBox* text1 = (J2DTextBox*)mpBaseScreen->search('wps_text'); - J2DTextBox* text2 = (J2DTextBox*)mpBaseScreen->search('w_p_text'); - J2DTextBox* text3 = (J2DTextBox*)mpBaseScreen->search('g_ps_txt'); - J2DTextBox* text4 = (J2DTextBox*)mpBaseScreen->search('g_p_text'); - mpBaseScreen->search('fwpstex1')->hide(); - mpBaseScreen->search('fwp_tex1')->hide(); - mpBaseScreen->search('fgps_tx1')->hide(); - mpBaseScreen->search('fgp_tex1')->hide(); + J2DTextBox* text1 = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('wps_text')); + J2DTextBox* text2 = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('w_p_text')); + J2DTextBox* text3 = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('g_ps_txt')); + J2DTextBox* text4 = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('g_p_text')); + mpBaseScreen->search(MULTI_CHAR('fwpstex1'))->hide(); + mpBaseScreen->search(MULTI_CHAR('fwp_tex1'))->hide(); + mpBaseScreen->search(MULTI_CHAR('fgps_tx1'))->hide(); + mpBaseScreen->search(MULTI_CHAR('fgp_tex1'))->hide(); #else - J2DTextBox* text1 = (J2DTextBox*)mpBaseScreen->search('fwpstex1'); - J2DTextBox* text2 = (J2DTextBox*)mpBaseScreen->search('fwp_tex1'); - J2DTextBox* text3 = (J2DTextBox*)mpBaseScreen->search('fgps_tx1'); - J2DTextBox* text4 = (J2DTextBox*)mpBaseScreen->search('fgp_tex1'); - mpBaseScreen->search('wps_text')->hide(); - mpBaseScreen->search('w_p_text')->hide(); - mpBaseScreen->search('g_ps_txt')->hide(); - mpBaseScreen->search('g_p_text')->hide(); + J2DTextBox* text1 = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('fwpstex1')); + J2DTextBox* text2 = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('fwp_tex1')); + J2DTextBox* text3 = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('fgps_tx1')); + J2DTextBox* text4 = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('fgp_tex1')); + mpBaseScreen->search(MULTI_CHAR('wps_text'))->hide(); + mpBaseScreen->search(MULTI_CHAR('w_p_text'))->hide(); + mpBaseScreen->search(MULTI_CHAR('g_ps_txt'))->hide(); + mpBaseScreen->search(MULTI_CHAR('g_p_text'))->hide(); #endif text1->setString(0x40, ""); text2->setString(0x40, ""); @@ -928,16 +928,16 @@ void dMenu_Letter_c::screenSetBase() { dMeter2Info_getStringKanji(0x4d7, text2->getStringPtr(), 0); dMeter2Info_getStringKanji(0x4d7, text3->getStringPtr(), 0); dMeter2Info_getStringKanji(0x4d7, text4->getStringPtr(), 0); - ((J2DTextBox*)mpBaseScreen->search('pi_no_00'))->setFont(mDoExt_getMesgFont()); - ((J2DTextBox*)mpBaseScreen->search('pi_no_01'))->setFont(mDoExt_getMesgFont()); - ((J2DTextBox*)mpBaseScreen->search('pi_no_02'))->setFont(mDoExt_getMesgFont()); - ((J2DTextBox*)mpBaseScreen->search('pi_no_03'))->setFont(mDoExt_getMesgFont()); - ((J2DTextBox*)mpBaseScreen->search('pi_no_04'))->setFont(mDoExt_getMesgFont()); - ((J2DTextBox*)mpBaseScreen->search('pi_no_05'))->setFont(mDoExt_getMesgFont()); - ((J2DTextBox*)mpBaseScreen->search('pi_no_06'))->setFont(mDoExt_getMesgFont()); - ((J2DTextBox*)mpBaseScreen->search('pi_no_07'))->setFont(mDoExt_getMesgFont()); - ((J2DTextBox*)mpBaseScreen->search('pi_no_08'))->setFont(mDoExt_getMesgFont()); - field_0x1ec = (J2DTextBox*)mpBaseScreen->search('let_area'); + ((J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('pi_no_00')))->setFont(mDoExt_getMesgFont()); + ((J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('pi_no_01')))->setFont(mDoExt_getMesgFont()); + ((J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('pi_no_02')))->setFont(mDoExt_getMesgFont()); + ((J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('pi_no_03')))->setFont(mDoExt_getMesgFont()); + ((J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('pi_no_04')))->setFont(mDoExt_getMesgFont()); + ((J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('pi_no_05')))->setFont(mDoExt_getMesgFont()); + ((J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('pi_no_06')))->setFont(mDoExt_getMesgFont()); + ((J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('pi_no_07')))->setFont(mDoExt_getMesgFont()); + ((J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('pi_no_08')))->setFont(mDoExt_getMesgFont()); + field_0x1ec = (J2DTextBox*)mpBaseScreen->search(MULTI_CHAR('let_area')); for (int i = 0; i < 9; i++) { field_0x1f0[i] = (J2DTextBox*)mpBaseScreen->search(tag_pip[i]); if (field_0x374 > 1 && i < field_0x374) { @@ -969,7 +969,7 @@ void dMenu_Letter_c::screenSetShadow() { mpSdwScreen = new J2DScreen(); mpSdwScreen->setPriority("zelda_letter_select_shadow.blo", 0x20000, mpArchive); dPaneClass_showNullPane(mpSdwScreen); - mpParent[2] = new CPaneMgr(mpSdwScreen, 'n_all', 2, NULL); + mpParent[2] = new CPaneMgr(mpSdwScreen, MULTI_CHAR('n_all'), 2, NULL); mpParent[2]->setAlphaRate(0.0f); } @@ -982,20 +982,20 @@ void dMenu_Letter_c::screenSetLetter() { #if VERSION == VERSION_GCN_JPN if (dComIfGs_getOptRuby() == 0) { - field_0x2ec[0] = new CPaneMgr(mpLetterScreen[0], 't3f_s', 0, NULL); - field_0x2ec[1] = new CPaneMgr(mpLetterScreen[0], 'mg_3flin', 0, NULL); - field_0x2f4[0] = new CPaneMgr(mpLetterScreen[0], 'mg_3f_s', 0, NULL); - field_0x2f4[1] = new CPaneMgr(mpLetterScreen[0], 'mg_3f', 0, NULL); + field_0x2ec[0] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('t3f_s'), 0, NULL); + field_0x2ec[1] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3flin'), 0, NULL); + field_0x2f4[0] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3f_s'), 0, NULL); + field_0x2f4[1] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3f'), 0, NULL); mpLetterScreen[0]->search('t4_s')->hide(); - mpLetterScreen[0]->search('mg_e4lin')->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('mg_e4lin'))->hide(); mpLetterScreen[0]->search('t3_s')->hide(); - mpLetterScreen[0]->search('mg_3line')->hide(); - mpLineParent = new CPaneMgr(mpLetterScreen[0], 'jp_fri_n', 0, NULL); + mpLetterScreen[0]->search(MULTI_CHAR('mg_3line'))->hide(); + mpLineParent = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('jp_fri_n'), 0, NULL); JUT_ASSERT(1530, mpLineParent != NULL); for (int i = 0; i < 12; i++) { static u64 const line_tag[12] = { - 'line00', 'line01', 'line02', 'line03', 'line04', 'line05', - 'line06', 'line07', 'line08', + MULTI_CHAR('line00'), MULTI_CHAR('line01'), MULTI_CHAR('line02'), MULTI_CHAR('line03'), MULTI_CHAR('line04'), MULTI_CHAR('line05'), + MULTI_CHAR('line06'), MULTI_CHAR('line07'), MULTI_CHAR('line08'), }; if (line_tag[i] != 0) { @@ -1011,22 +1011,22 @@ void dMenu_Letter_c::screenSetLetter() { ((J2DTextBox*)field_0x2f4[1]->getPanePtr())->setLineSpace(((J2DTextBox*)field_0x2ec[1]->getPanePtr())->getLineSpace()); } else { field_0x2ec[0] = new CPaneMgr(mpLetterScreen[0], 't3_s', 0, NULL); - field_0x2ec[1] = new CPaneMgr(mpLetterScreen[0], 'mg_3line', 0, NULL); + field_0x2ec[1] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3line'), 0, NULL); for (int i = 0; i < 2; i++) { field_0x2f4[i] = NULL; } mpLetterScreen[0]->search('t4_s')->hide(); - mpLetterScreen[0]->search('mg_e4lin')->hide(); - mpLetterScreen[0]->search('t3f_s')->hide(); - mpLetterScreen[0]->search('mg_3flin')->hide(); - mpLetterScreen[0]->search('mg_3f_s')->hide(); - mpLetterScreen[0]->search('mg_3f')->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('mg_e4lin'))->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('t3f_s'))->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('mg_3flin'))->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('mg_3f_s'))->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('mg_3f'))->hide(); mpLineParent = new CPaneMgr(mpLetterScreen[0], 'jp_n', 0, NULL); JUT_ASSERT(1530, mpLineParent != NULL); for (int i = 0; i < 12; i++) { static u64 const line_tag[12] = { - 'line21', 'line22', 'line23', 'line24', 'line25', 'line26', - 'line27', 'line28', 'line29', + MULTI_CHAR('line21'), MULTI_CHAR('line22'), MULTI_CHAR('line23'), MULTI_CHAR('line24'), MULTI_CHAR('line25'), MULTI_CHAR('line26'), + MULTI_CHAR('line27'), MULTI_CHAR('line28'), MULTI_CHAR('line29'), }; if (line_tag[i] != 0) { @@ -1036,26 +1036,26 @@ void dMenu_Letter_c::screenSetLetter() { } } - mpLetterScreen[0]->search('jp_fri_n')->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('jp_fri_n'))->hide(); mpLetterScreen[0]->search('us_n')->hide(); } #else static u64 const line_tag[12] = { - 'line09', 'line10', 'line11', 'line12', 'line13', 'line14', - 'line15', 'line16', 'line17', 'line18', 'line19', 'line20', + MULTI_CHAR('line09'), MULTI_CHAR('line10'), MULTI_CHAR('line11'), MULTI_CHAR('line12'), MULTI_CHAR('line13'), MULTI_CHAR('line14'), + MULTI_CHAR('line15'), MULTI_CHAR('line16'), MULTI_CHAR('line17'), MULTI_CHAR('line18'), MULTI_CHAR('line19'), MULTI_CHAR('line20'), }; field_0x2ec[0] = new CPaneMgr(mpLetterScreen[0], 't4_s', 0, NULL); - field_0x2ec[1] = new CPaneMgr(mpLetterScreen[0], 'mg_e4lin', 0, NULL); + field_0x2ec[1] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_e4lin'), 0, NULL); for (int i = 0; i < 2; i++) { field_0x2f4[i] = NULL; } - mpLetterScreen[0]->search('t3f_s')->hide(); - mpLetterScreen[0]->search('mg_3flin')->hide(); - mpLetterScreen[0]->search('mg_3f_s')->hide(); - mpLetterScreen[0]->search('mg_3f')->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('t3f_s'))->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('mg_3flin'))->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('mg_3f_s'))->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('mg_3f'))->hide(); mpLetterScreen[0]->search('t3_s')->hide(); - mpLetterScreen[0]->search('mg_3line')->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('mg_3line'))->hide(); mpLineParent = new CPaneMgr(mpLetterScreen[0], 'us_n', 0, NULL); JUT_ASSERT(1530, mpLineParent != NULL); for (int i = 0; i < 12; i++) { @@ -1065,7 +1065,7 @@ void dMenu_Letter_c::screenSetLetter() { field_0x25c[i] = NULL; } } - mpLetterScreen[0]->search('jp_fri_n')->hide(); + mpLetterScreen[0]->search(MULTI_CHAR('jp_fri_n'))->hide(); mpLetterScreen[0]->search('jp_n')->hide(); #endif @@ -1085,8 +1085,8 @@ void dMenu_Letter_c::screenSetLetter() { #endif } } - field_0x1e4[0] = (J2DTextBox*)mpLetterScreen[0]->search('p_texts'); - field_0x1e4[1] = (J2DTextBox*)mpLetterScreen[0]->search('p_text'); + field_0x1e4[0] = (J2DTextBox*)mpLetterScreen[0]->search(MULTI_CHAR('p_texts')); + field_0x1e4[1] = (J2DTextBox*)mpLetterScreen[0]->search(MULTI_CHAR('p_text')); for (int i = 0; i < 2; i++) { field_0x1e4[i]->setFont(mDoExt_getSubFont()); field_0x1e4[i]->setString(0x10, ""); @@ -1097,7 +1097,7 @@ void dMenu_Letter_c::screenSetLetter() { JUT_ASSERT(1631, fg != false); dPaneClass_showNullPane(mpLetterScreen[1]); for (int i = 0; i < 2; i++) { - mpTextParent[i] = new CPaneMgr(mpLetterScreen[i], 'n_all', 2, NULL); + mpTextParent[i] = new CPaneMgr(mpLetterScreen[i], MULTI_CHAR('n_all'), 2, NULL); JUT_ASSERT(1636, mpTextParent[i] != NULL); mpTextParent[i]->scale(0.0f, 0.0f); mpTextParent[i]->setAlphaRate(0.0f); @@ -1111,10 +1111,10 @@ void dMenu_Letter_c::screenSetLetter() { void dMenu_Letter_c::screenSetDoIcon() { static const u64 text_a_tag[5] = { - 'atext1_1', 'atext1_2', 'atext1_3', 'atext1_4', 'atext1_5', + MULTI_CHAR('atext1_1'), MULTI_CHAR('atext1_2'), MULTI_CHAR('atext1_3'), MULTI_CHAR('atext1_4'), MULTI_CHAR('atext1_5'), }; static const u64 text_b_tag[5] = { - 'btext1_1', 'btext1_2', 'btext1_3', 'btext1_4', 'btext1_5', + MULTI_CHAR('btext1_1'), MULTI_CHAR('btext1_2'), MULTI_CHAR('btext1_3'), MULTI_CHAR('btext1_4'), MULTI_CHAR('btext1_5'), }; mpIconScreen = new J2DScreen(); diff --git a/src/d/d_menu_option.cpp b/src/d/d_menu_option.cpp index 269bef1849..b398a06789 100644 --- a/src/d/d_menu_option.cpp +++ b/src/d/d_menu_option.cpp @@ -92,13 +92,13 @@ dMenu_Option_c::~dMenu_Option_c() {} static const u32 dMo_soundMode[3] = {0, 1, 2}; void dMenu_Option_c::_create() { - static const u64 text_a_tag[5] = {'atext1_1', 'atext1_2', 'atext1_3', 'atext1_4', 'atext1_5'}; - static const u64 text_b_tag[5] = {'btext1_1', 'btext1_2', 'btext1_3', 'btext1_4', 'btext1_5'}; - static const u64 l_tagName012[2] = {'w_no_n', 'w_yes_n'}; - static const u64 l_tagName013[2] = {'w_no_t', 'w_yes_t'}; - static const u64 l_tagName9[2] = {'w_no_m', 'w_yes_m'}; - static const u64 l_tagName10[2] = {'w_no_g', 'w_yes_g'}; - static const u64 l_tagName11[2] = {'w_no_gr', 'w_yes_gr'}; + static const u64 text_a_tag[5] = {MULTI_CHAR('atext1_1'), MULTI_CHAR('atext1_2'), MULTI_CHAR('atext1_3'), MULTI_CHAR('atext1_4'), MULTI_CHAR('atext1_5')}; + static const u64 text_b_tag[5] = {MULTI_CHAR('btext1_1'), MULTI_CHAR('btext1_2'), MULTI_CHAR('btext1_3'), MULTI_CHAR('btext1_4'), MULTI_CHAR('btext1_5')}; + static const u64 l_tagName012[2] = {MULTI_CHAR('w_no_n'), MULTI_CHAR('w_yes_n')}; + static const u64 l_tagName013[2] = {MULTI_CHAR('w_no_t'), MULTI_CHAR('w_yes_t')}; + static const u64 l_tagName9[2] = {MULTI_CHAR('w_no_m'), MULTI_CHAR('w_yes_m')}; + static const u64 l_tagName10[2] = {MULTI_CHAR('w_no_g'), MULTI_CHAR('w_yes_g')}; + static const u64 l_tagName11[2] = {MULTI_CHAR('w_no_gr'), MULTI_CHAR('w_yes_gr')}; static const u8 l_msgNum2[2] = {8, 7}; mpFont = mDoExt_getMesgFont(); @@ -116,14 +116,14 @@ void dMenu_Option_c::_create() { bool fg = mpScreen->setPriority("zelda_option_select_menu.blo", 0x20000, mpArchive); JUT_ASSERT(210, fg != false); - mpScreen->search('base_a_n')->hide(); - mpScreen->search('y_set_p4')->hide(); - mpScreen->search('y_set_p3')->hide(); - mpScreen->search('y_set_p2')->hide(); - mpScreen->search('y_set_p1')->hide(); - mpScreen->search('y_set_p0')->hide(); - field_0x254[0] = (J2DTextBox*)mpScreen->search('cont_ts'); - field_0x254[1] = (J2DTextBox*)mpScreen->search('cont_t'); + mpScreen->search(MULTI_CHAR('base_a_n'))->hide(); + mpScreen->search(MULTI_CHAR('y_set_p4'))->hide(); + mpScreen->search(MULTI_CHAR('y_set_p3'))->hide(); + mpScreen->search(MULTI_CHAR('y_set_p2'))->hide(); + mpScreen->search(MULTI_CHAR('y_set_p1'))->hide(); + mpScreen->search(MULTI_CHAR('y_set_p0'))->hide(); + field_0x254[0] = (J2DTextBox*)mpScreen->search(MULTI_CHAR('cont_ts')); + field_0x254[1] = (J2DTextBox*)mpScreen->search(MULTI_CHAR('cont_t')); for (int i = 0; i < 2; i++) { field_0x254[i]->setFont(mDoExt_getMesgFont()); field_0x254[i]->setString(0x20, ""); @@ -132,8 +132,8 @@ void dMenu_Option_c::_create() { JUT_ASSERT(246, mpBackScreen != NULL); fg = mpBackScreen->setPriority("zelda_option_base.blo", 0x20000, mpArchive); JUT_ASSERT(251, fg != false); - mpBackScreen->search('wi_btn_n')->hide(); - field_0x27c = mpBackScreen->search('let_area'); + mpBackScreen->search(MULTI_CHAR('wi_btn_n'))->hide(); + field_0x27c = mpBackScreen->search(MULTI_CHAR('let_area')); mpClipScreen = new J2DScreen(); JUT_ASSERT(265, mpClipScreen != NULL); @@ -147,7 +147,7 @@ void dMenu_Option_c::_create() { fg = mpShadowScreen->setPriority("zelda_option_menu_shadow.blo", 0x20000, mpArchive); JUT_ASSERT(278, fg != false); dPaneClass_showNullPane(mpShadowScreen); - mpShadowScreen->search('mw_n_5')->hide(); + mpShadowScreen->search(MULTI_CHAR('mw_n_5'))->hide(); mpTVScreen = new J2DScreen(); JUT_ASSERT(287, mpTVScreen != NULL); @@ -155,12 +155,12 @@ void dMenu_Option_c::_create() { JUT_ASSERT(291, fg != false); dPaneClass_showNullPane(mpTVScreen); - mpTVButtonAB = new CPaneMgr(mpTVScreen, 'g_abtn_n', 0, NULL); + mpTVButtonAB = new CPaneMgr(mpTVScreen, MULTI_CHAR('g_abtn_n'), 0, NULL); JUT_ASSERT(295, mpTVButtonAB != NULL); - mpTVButtonText = new CPaneMgr(mpTVScreen, 'a_text_n', 0, NULL); + mpTVButtonText = new CPaneMgr(mpTVScreen, MULTI_CHAR('a_text_n'), 0, NULL); JUT_ASSERT(298, mpTVButtonText != NULL); - mpTVScreen->search('g_abtn_n')->hide(); + mpTVScreen->search(MULTI_CHAR('g_abtn_n'))->hide(); mpScreenIcon = new J2DScreen(); JUT_ASSERT(325, mpScreenIcon != NULL); @@ -1289,141 +1289,141 @@ void dMenu_Option_c::menuHide(int index) { void dMenu_Option_c::screenSet() { static const u64 tag_frame[6] = { - 'flame_00', 'flame_01', 'flame_02', 'flame_03', 'flame_04', 'flame_05', + MULTI_CHAR('flame_00'), MULTI_CHAR('flame_01'), MULTI_CHAR('flame_02'), MULTI_CHAR('flame_03'), MULTI_CHAR('flame_04'), MULTI_CHAR('flame_05'), }; #if VERSION == VERSION_GCN_JPN static const u64 tag_menu0[6] = { - 'menu_t0', 'menu_t1', 'menu_t2', 'menu_t3', 'menu_t4', 'menu_t5', + MULTI_CHAR('menu_t0'), MULTI_CHAR('menu_t1'), MULTI_CHAR('menu_t2'), MULTI_CHAR('menu_t3'), MULTI_CHAR('menu_t4'), MULTI_CHAR('menu_t5'), }; #else static const u64 tag_menu0[6] = { - 'fenu_t0', 'fenu_t1', 'fenu_t2', 'fenu_t3', 'fenu_t4', 'fenu_t5', + MULTI_CHAR('fenu_t0'), MULTI_CHAR('fenu_t1'), MULTI_CHAR('fenu_t2'), MULTI_CHAR('fenu_t3'), MULTI_CHAR('fenu_t4'), MULTI_CHAR('fenu_t5'), }; #endif static const u64 let_n[6] = { - 'let_00_n', 'let_01_n', 'let_02_n', 'let_03_n', 'let_04_n', 'let_05_n', + MULTI_CHAR('let_00_n'), MULTI_CHAR('let_01_n'), MULTI_CHAR('let_02_n'), MULTI_CHAR('let_03_n'), MULTI_CHAR('let_04_n'), MULTI_CHAR('let_05_n'), }; static const u64 let2_n[6] = { - 'let_00_n', 'let_01_n', 'let_02_n', 'let_03_n', 'let_04_n', + MULTI_CHAR('let_00_n'), MULTI_CHAR('let_01_n'), MULTI_CHAR('let_02_n'), MULTI_CHAR('let_03_n'), MULTI_CHAR('let_04_n'), }; static const u64 menu_n[6] = { - 'menu_n0', 'menu_n1', 'menu_n2', 'menu_n3', 'menu_n4', 'menu_n5', + MULTI_CHAR('menu_n0'), MULTI_CHAR('menu_n1'), MULTI_CHAR('menu_n2'), MULTI_CHAR('menu_n3'), MULTI_CHAR('menu_n4'), MULTI_CHAR('menu_n5'), }; static const u64 menu2_n[6] = { - 'mw_n_0', 'mw_n_1', 'mw_n_2', 'mw_n_3', 'mw_n_4', + MULTI_CHAR('mw_n_0'), MULTI_CHAR('mw_n_1'), MULTI_CHAR('mw_n_2'), MULTI_CHAR('mw_n_3'), MULTI_CHAR('mw_n_4'), }; static const u64 al0_n[6] = { - 's_grr_00', 's_grr_01', 's_grr_02', 's_grr_03', 's_grr_04', 's_grr_05', + MULTI_CHAR('s_grr_00'), MULTI_CHAR('s_grr_01'), MULTI_CHAR('s_grr_02'), MULTI_CHAR('s_grr_03'), MULTI_CHAR('s_grr_04'), MULTI_CHAR('s_grr_05'), }; static const u64 al1_n[6] = { - 'c_grr_00', 'c_grr_01', 'c_grr_02', 'c_grr_03', 'c_grr_04', 'c_grr_05', + MULTI_CHAR('c_grr_00'), MULTI_CHAR('c_grr_01'), MULTI_CHAR('c_grr_02'), MULTI_CHAR('c_grr_03'), MULTI_CHAR('c_grr_04'), MULTI_CHAR('c_grr_05'), }; static const u64 al2_n[6] = { - 's_grl_00', 's_grl_01', 's_grl_02', 's_grl_03', 's_grl_04', 's_grl_05', + MULTI_CHAR('s_grl_00'), MULTI_CHAR('s_grl_01'), MULTI_CHAR('s_grl_02'), MULTI_CHAR('s_grl_03'), MULTI_CHAR('s_grl_04'), MULTI_CHAR('s_grl_05'), }; static const u64 al3_n[6] = { - 'c_grl_00', 'c_grl_01', 'c_grl_02', 'c_grl_03', 'c_grl_04', 'c_grl_05', + MULTI_CHAR('c_grl_00'), MULTI_CHAR('c_grl_01'), MULTI_CHAR('c_grl_02'), MULTI_CHAR('c_grl_03'), MULTI_CHAR('c_grl_04'), MULTI_CHAR('c_grl_05'), }; static const u64 haihail_n[5] = { - 'y_set_l0', 'y_set_l1', 'y_set_l2', 'y_set_l3', 'y_set_l4', + MULTI_CHAR('y_set_l0'), MULTI_CHAR('y_set_l1'), MULTI_CHAR('y_set_l2'), MULTI_CHAR('y_set_l3'), MULTI_CHAR('y_set_l4'), }; static const u64 haihair_n[5] = { - 'y_set_r0', 'y_set_r1', 'y_set_r2', 'y_set_r3', 'y_set_r4', + MULTI_CHAR('y_set_r0'), MULTI_CHAR('y_set_r1'), MULTI_CHAR('y_set_r2'), MULTI_CHAR('y_set_r3'), MULTI_CHAR('y_set_r4'), }; static const u64 menu3_n[6] = { - 'menuapn0', 'menuapn1', 'menuapn2', 'menuapn3', 'menuapn4', + MULTI_CHAR('menuapn0'), MULTI_CHAR('menuapn1'), MULTI_CHAR('menuapn2'), MULTI_CHAR('menuapn3'), MULTI_CHAR('menuapn4'), }; static const u64 tv_btnA[5] = { - 'cont_at1', 'cont_at2', 'cont_at3', 'cont_at4', 'cont_at', + MULTI_CHAR('cont_at1'), MULTI_CHAR('cont_at2'), MULTI_CHAR('cont_at3'), MULTI_CHAR('cont_at4'), MULTI_CHAR('cont_at'), }; static const u64 ftv_btnA[5] = { - 'font_a1', 'font_at2', 'font_at3', 'font_at4', 'font_at', + MULTI_CHAR('font_a1'), MULTI_CHAR('font_at2'), MULTI_CHAR('font_at3'), MULTI_CHAR('font_at4'), MULTI_CHAR('font_at'), }; #if VERSION == VERSION_GCN_JPN - static const u64 fenu_t0[2] = {'fenu_t0s', 'fenu_t0'}; - static const u64 menu_t0[2] = {'menu_t0s', 'menu_t0'}; - static const u64 fenu_t1[2] = {'fenu_t1s', 'fenu_t1'}; - static const u64 menu_t1[2] = {'menu_t1s', 'menu_t1'}; - static const u64 fenu_t2[2] = {'fenu_t2s', 'fenu_t2'}; - static const u64 menu_t2[2] = {'menu_t2s', 'menu_t2'}; - static const u64 fenu_t3[2] = {'fenu_t3s', 'fenu_t3'}; - static const u64 menu_t3[2] = {'menu_t3s', 'menu_t3'}; - static const u64 fenu_t4[2] = {'fenu_t4s', 'fenu_t4'}; - static const u64 menu_t4[2] = {'menu_t4s', 'menu_t4'}; - static const u64 fenu_t5[2] = {'fenu_t5s', 'fenu_t5'}; - static const u64 menu_t5[2] = {'menu_t5s', 'menu_t5'}; + static const u64 fenu_t0[2] = {MULTI_CHAR('fenu_t0s'), MULTI_CHAR('fenu_t0')}; + static const u64 menu_t0[2] = {MULTI_CHAR('menu_t0s'), MULTI_CHAR('menu_t0')}; + static const u64 fenu_t1[2] = {MULTI_CHAR('fenu_t1s'), MULTI_CHAR('fenu_t1')}; + static const u64 menu_t1[2] = {MULTI_CHAR('menu_t1s'), MULTI_CHAR('menu_t1')}; + static const u64 fenu_t2[2] = {MULTI_CHAR('fenu_t2s'), MULTI_CHAR('fenu_t2')}; + static const u64 menu_t2[2] = {MULTI_CHAR('menu_t2s'), MULTI_CHAR('menu_t2')}; + static const u64 fenu_t3[2] = {MULTI_CHAR('fenu_t3s'), MULTI_CHAR('fenu_t3')}; + static const u64 menu_t3[2] = {MULTI_CHAR('menu_t3s'), MULTI_CHAR('menu_t3')}; + static const u64 fenu_t4[2] = {MULTI_CHAR('fenu_t4s'), MULTI_CHAR('fenu_t4')}; + static const u64 menu_t4[2] = {MULTI_CHAR('menu_t4s'), MULTI_CHAR('menu_t4')}; + static const u64 fenu_t5[2] = {MULTI_CHAR('fenu_t5s'), MULTI_CHAR('fenu_t5')}; + static const u64 menu_t5[2] = {MULTI_CHAR('menu_t5s'), MULTI_CHAR('menu_t5')}; #else - static const u64 fenu_t0[2] = {'fenu_t0s', 'fenu_t0'}; - static const u64 menu_t0[2] = {'menu_t0s', 'menu_t0'}; - static const u64 fenu_t2[2] = {'fenu_t1s', 'fenu_t1'}; - static const u64 menu_t2[2] = {'menu_t1s', 'menu_t1'}; - static const u64 fenu_t3[2] = {'fenu_t2s', 'fenu_t2'}; - static const u64 menu_t3[2] = {'menu_t2s', 'menu_t2'}; - static const u64 fenu_t4[2] = {'fenu_t3s', 'fenu_t3'}; - static const u64 menu_t4[2] = {'menu_t3s', 'menu_t3'}; - static const u64 fenu_t1[2] = {'fenu_t4s', 'fenu_t4'}; - static const u64 menu_t1[2] = {'menu_t4s', 'menu_t4'}; - static const u64 fenu_t5[2] = {'fenu_t5s', 'fenu_t5'}; - static const u64 menu_t5[2] = {'menu_t5s', 'menu_t5'}; + static const u64 fenu_t0[2] = {MULTI_CHAR('fenu_t0s'), MULTI_CHAR('fenu_t0')}; + static const u64 menu_t0[2] = {MULTI_CHAR('menu_t0s'), MULTI_CHAR('menu_t0')}; + static const u64 fenu_t2[2] = {MULTI_CHAR('fenu_t1s'), MULTI_CHAR('fenu_t1')}; + static const u64 menu_t2[2] = {MULTI_CHAR('menu_t1s'), MULTI_CHAR('menu_t1')}; + static const u64 fenu_t3[2] = {MULTI_CHAR('fenu_t2s'), MULTI_CHAR('fenu_t2')}; + static const u64 menu_t3[2] = {MULTI_CHAR('menu_t2s'), MULTI_CHAR('menu_t2')}; + static const u64 fenu_t4[2] = {MULTI_CHAR('fenu_t3s'), MULTI_CHAR('fenu_t3')}; + static const u64 menu_t4[2] = {MULTI_CHAR('menu_t3s'), MULTI_CHAR('menu_t3')}; + static const u64 fenu_t1[2] = {MULTI_CHAR('fenu_t4s'), MULTI_CHAR('fenu_t4')}; + static const u64 menu_t1[2] = {MULTI_CHAR('menu_t4s'), MULTI_CHAR('menu_t4')}; + static const u64 fenu_t5[2] = {MULTI_CHAR('fenu_t5s'), MULTI_CHAR('fenu_t5')}; + static const u64 menu_t5[2] = {MULTI_CHAR('menu_t5s'), MULTI_CHAR('menu_t5')}; #endif static const u64 menut_0[6] = { - 'menut0as', 'menut0a', 'menut0a2', 'menut0a1', 'menut0a4', 'menut0a3', + MULTI_CHAR('menut0as'), MULTI_CHAR('menut0a'), MULTI_CHAR('menut0a2'), MULTI_CHAR('menut0a1'), MULTI_CHAR('menut0a4'), MULTI_CHAR('menut0a3'), }; static const u64 fenut_0[6] = { - 'menut010', 'menut0a9', 'menut0a8', 'menut0a7', 'menut0a6', 'menut0a5', + MULTI_CHAR('menut010'), MULTI_CHAR('menut0a9'), MULTI_CHAR('menut0a8'), MULTI_CHAR('menut0a7'), MULTI_CHAR('menut0a6'), MULTI_CHAR('menut0a5'), }; static const u64 menut_1[6] = { - 'menut1as', 'menut1a', 'menut1a2', 'menut1a1', 'menut1a4', 'menut1a3', + MULTI_CHAR('menut1as'), MULTI_CHAR('menut1a'), MULTI_CHAR('menut1a2'), MULTI_CHAR('menut1a1'), MULTI_CHAR('menut1a4'), MULTI_CHAR('menut1a3'), }; static const u64 fenut_1[6] = { - 'menut110', 'menut1a9', 'menut1a8', 'menut1a7', 'menut1a6', 'menut1a5', + MULTI_CHAR('menut110'), MULTI_CHAR('menut1a9'), MULTI_CHAR('menut1a8'), MULTI_CHAR('menut1a7'), MULTI_CHAR('menut1a6'), MULTI_CHAR('menut1a5'), }; static const u64 menut_2[6] = { - 'menut2as', 'menut2a', 'menut2a2', 'menut2a1', 'menut2a4', 'menut2a3', + MULTI_CHAR('menut2as'), MULTI_CHAR('menut2a'), MULTI_CHAR('menut2a2'), MULTI_CHAR('menut2a1'), MULTI_CHAR('menut2a4'), MULTI_CHAR('menut2a3'), }; static const u64 fenut_2[6] = { - 'menut210', 'menut2a9', 'menut2a8', 'menut2a7', 'menut2a6', 'menut2a5', + MULTI_CHAR('menut210'), MULTI_CHAR('menut2a9'), MULTI_CHAR('menut2a8'), MULTI_CHAR('menut2a7'), MULTI_CHAR('menut2a6'), MULTI_CHAR('menut2a5'), }; static const u64 menut_3[6] = { - 'menut3a5', 'menut3a6', 'menut3a7', 'menut3a8', 'menut3a9', 'menut310', + MULTI_CHAR('menut3a5'), MULTI_CHAR('menut3a6'), MULTI_CHAR('menut3a7'), MULTI_CHAR('menut3a8'), MULTI_CHAR('menut3a9'), MULTI_CHAR('menut310'), }; static const u64 fenut_3[6] = { - 'menut315', 'menut314', 'menut313', 'menut312', 'menut311', 'menut001', + MULTI_CHAR('menut315'), MULTI_CHAR('menut314'), MULTI_CHAR('menut313'), MULTI_CHAR('menut312'), MULTI_CHAR('menut311'), MULTI_CHAR('menut001'), }; static const u64 menut_4[6] = { - 'menut3as', 'menut3a', 'menut3a2', 'menut3a1', 'menut3a4', 'menut3a3', + MULTI_CHAR('menut3as'), MULTI_CHAR('menut3a'), MULTI_CHAR('menut3a2'), MULTI_CHAR('menut3a1'), MULTI_CHAR('menut3a4'), MULTI_CHAR('menut3a3'), }; static const u64 fenut_4[6] = { - 'menut321', 'menut320', 'menut319', 'menut318', 'menut317', 'menut316', + MULTI_CHAR('menut321'), MULTI_CHAR('menut320'), MULTI_CHAR('menut319'), MULTI_CHAR('menut318'), MULTI_CHAR('menut317'), MULTI_CHAR('menut316'), }; #if VERSION == VERSION_GCN_JPN static const u64 tx[6] = { - 'wps_text', 'w_p_text', 'g_ps_tx3', 'g_p_tex3', 'wps_tex1', 'w_p_tex1', + MULTI_CHAR('wps_text'), MULTI_CHAR('w_p_text'), MULTI_CHAR('g_ps_tx3'), MULTI_CHAR('g_p_tex3'), MULTI_CHAR('wps_tex1'), MULTI_CHAR('w_p_tex1'), }; #else static const u64 tx[6] = { - 'w_p_tex5', 'w_p_tex6', 'w_p_tex3', 'w_p_tex4', 'fps_tex1', 'f_p_tex1', + MULTI_CHAR('w_p_tex5'), MULTI_CHAR('w_p_tex6'), MULTI_CHAR('w_p_tex3'), MULTI_CHAR('w_p_tex4'), MULTI_CHAR('fps_tex1'), MULTI_CHAR('f_p_tex1'), }; #endif static const u64 op_tx[4] = { - 'w_text_n', 'w_btn_n', 'w_k_t_n', 'w_abtn_n', + MULTI_CHAR('w_text_n'), MULTI_CHAR('w_btn_n'), MULTI_CHAR('w_k_t_n'), MULTI_CHAR('w_abtn_n'), }; static const u64 z_tx[3] = { - 'z_gc_n', 0, 0, + MULTI_CHAR('z_gc_n'), 0, 0, }; #if VERSION == VERSION_GCN_JPN static const u64 txTV[10] = { - 'menu_t6s', 'menu_t6', 'menu_t9s', 'menu_t9', 'menut10s', - 'menu_t10', 'menu_t7s', 'menu_t7', 'menu_t8s', 'menu_t8', + MULTI_CHAR('menu_t6s'), MULTI_CHAR('menu_t6'), MULTI_CHAR('menu_t9s'), MULTI_CHAR('menu_t9'), MULTI_CHAR('menut10s'), + MULTI_CHAR('menu_t10'), MULTI_CHAR('menu_t7s'), MULTI_CHAR('menu_t7'), MULTI_CHAR('menu_t8s'), MULTI_CHAR('menu_t8'), }; #else static const u64 txTV[10] = { - 'menu_t61', 'menu_t2', 'menu_t91', 'menu_t1', 'menut101', - 'menu_t01', 'menu_t71', 'menu_t3', 'menu_t81', 'menu_t4', + MULTI_CHAR('menu_t61'), MULTI_CHAR('menu_t2'), MULTI_CHAR('menu_t91'), MULTI_CHAR('menu_t1'), MULTI_CHAR('menut101'), + MULTI_CHAR('menu_t01'), MULTI_CHAR('menu_t71'), MULTI_CHAR('menu_t3'), MULTI_CHAR('menu_t81'), MULTI_CHAR('menu_t4'), }; #endif - mpTitle = new CPaneMgr(mpBackScreen, 'title_n', 0, NULL); + mpTitle = new CPaneMgr(mpBackScreen, MULTI_CHAR('title_n'), 0, NULL); Vec pos = mpTitle->getGlobalVtxCenter(mpTitle->mPane, false, 0); mpWarning->mPosY = pos.y + g_drawHIO.mOptionScreen.mBackgroundPosY; for (int i = 0; i < 6; i++) { @@ -1445,11 +1445,11 @@ void dMenu_Option_c::screenSet() { mpDrawCursor->setScale(0.0f); mpDrawCursor->setParam(1.01f, 0.85f, 0.02f, 0.5f, 0.5f); mpDrawCursor->offPlayAnime(0); - mpParent[0] = new CPaneMgr(mpScreen, 'n_all', 2, NULL); - mpParent[1] = new CPaneMgr(mpClipScreen, 'n_all', 2, NULL); + mpParent[0] = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 2, NULL); + mpParent[1] = new CPaneMgr(mpClipScreen, MULTI_CHAR('n_all'), 2, NULL); mpParent[2] = new CPaneMgr(mpShadowScreen, 'nall', 2, NULL); - mpParent[3] = new CPaneMgr(mpTVScreen, 'n_all', 2, NULL); - mpParent[4] = new CPaneMgr(mpBackScreen, 'n_all', 2, NULL); + mpParent[3] = new CPaneMgr(mpTVScreen, MULTI_CHAR('n_all'), 2, NULL); + mpParent[4] = new CPaneMgr(mpBackScreen, MULTI_CHAR('n_all'), 2, NULL); for (int i = 0; i < 6; i++) { mpMenuNull[i] = new CPaneMgr(mpScreen, let_n[i], 0, NULL); mpMenuPane[i] = new CPaneMgr(mpScreen, menu_n[i], 0, NULL); @@ -1496,19 +1496,19 @@ void dMenu_Option_c::screenSet() { } } #if VERSION == VERSION_GCN_JPN - field_0x270[0] = (J2DTextBox*)mpBackScreen->search('t_t00'); - field_0x270[1] = (J2DTextBox*)mpBackScreen->search('t_t01'); - mpBackScreen->search('f_t00')->hide(); - mpBackScreen->search('t_t01')->hide(); - field_0x270[2] = (J2DTextBox*)mpTVScreen->search('t_t00'); - mpTVScreen->search('f_t00')->hide(); + field_0x270[0] = (J2DTextBox*)mpBackScreen->search(MULTI_CHAR('t_t00')); + field_0x270[1] = (J2DTextBox*)mpBackScreen->search(MULTI_CHAR('t_t01')); + mpBackScreen->search(MULTI_CHAR('f_t00'))->hide(); + mpBackScreen->search(MULTI_CHAR('t_t01'))->hide(); + field_0x270[2] = (J2DTextBox*)mpTVScreen->search(MULTI_CHAR('t_t00')); + mpTVScreen->search(MULTI_CHAR('f_t00'))->hide(); #else - field_0x270[0] = (J2DTextBox*)mpBackScreen->search('f_t00'); - field_0x270[1] = (J2DTextBox*)mpBackScreen->search('t_t01'); - mpBackScreen->search('t_t00')->hide(); - mpBackScreen->search('t_t01')->hide(); - field_0x270[2] = (J2DTextBox*)mpTVScreen->search('f_t00'); - mpTVScreen->search('t_t00')->hide(); + field_0x270[0] = (J2DTextBox*)mpBackScreen->search(MULTI_CHAR('f_t00')); + field_0x270[1] = (J2DTextBox*)mpBackScreen->search(MULTI_CHAR('t_t01')); + mpBackScreen->search(MULTI_CHAR('t_t00'))->hide(); + mpBackScreen->search(MULTI_CHAR('t_t01'))->hide(); + field_0x270[2] = (J2DTextBox*)mpTVScreen->search(MULTI_CHAR('f_t00')); + mpTVScreen->search(MULTI_CHAR('t_t00'))->hide(); #endif for (int i = 0; i < 3; i++) { field_0x270[i]->setFont(mDoExt_getRubyFont()); @@ -1697,11 +1697,11 @@ void dMenu_Option_c::screenSet() { field_0x3b4 = 0.0f; menuVisible(); #if VERSION == VERSION_GCN_JPN - mpBackScreen->search('jpn_n')->show(); - mpBackScreen->search('foregn_n')->hide(); + mpBackScreen->search(MULTI_CHAR('jpn_n'))->show(); + mpBackScreen->search(MULTI_CHAR('foregn_n'))->hide(); #else - mpBackScreen->search('jpn_n')->hide(); - mpBackScreen->search('foregn_n')->show(); + mpBackScreen->search(MULTI_CHAR('jpn_n'))->hide(); + mpBackScreen->search(MULTI_CHAR('foregn_n'))->show(); #endif for (int i = 0; i < 6; i++) { J2DTextBox* backScreen = (J2DTextBox*)mpBackScreen->search(tx[i]); @@ -1715,7 +1715,7 @@ void dMenu_Option_c::screenSet() { mpString->getString(0x556, backScreen, NULL, NULL, NULL, 0); } } - mpBackScreen->search('wi_btn_n')->hide(); + mpBackScreen->search(MULTI_CHAR('wi_btn_n'))->hide(); for (int i = 0; i < 4; i++) { field_0x1c0[i] = 0; } @@ -2075,14 +2075,14 @@ void dMenu_Option_c::changeTVCheck() { static void dummy() { #if VERSION == VERSION_GCN_JPN - static const u64 txTVhide[5] = {'fmenu_6n', 'fmenu_9n', 'fmenu_10', 'fmenu_7n', 'fmenu_8n'}; + static const u64 txTVhide[5] = {MULTI_CHAR('fmenu_6n'), MULTI_CHAR('fmenu_9n'), MULTI_CHAR('fmenu_10'), MULTI_CHAR('fmenu_7n'), MULTI_CHAR('fmenu_8n')}; #else - static const u64 txTVhide[5] = {'menu_6n', 'menu_9n', 'menu_10n', 'menu_7n', 'menu_8n'}; + static const u64 txTVhide[5] = {MULTI_CHAR('menu_6n'), MULTI_CHAR('menu_9n'), MULTI_CHAR('menu_10n'), MULTI_CHAR('menu_7n'), MULTI_CHAR('menu_8n')}; #endif } void dMenu_Option_c::setAButtonString(u16 i_stringID) { - static const u64 text_a_tag[5] = {'atext1_1', 'atext1_2', 'atext1_3', 'atext1_4', 'atext1_5'}; + static const u64 text_a_tag[5] = {MULTI_CHAR('atext1_1'), MULTI_CHAR('atext1_2'), MULTI_CHAR('atext1_3'), MULTI_CHAR('atext1_4'), MULTI_CHAR('atext1_5')}; u32 stringId = i_stringID; if (stringId != field_0x3dc) { field_0x3dc = i_stringID; @@ -2101,7 +2101,7 @@ void dMenu_Option_c::setAButtonString(u16 i_stringID) { } void dMenu_Option_c::setBButtonString(u16 i_stringID) { - static const u64 text_b_tag[5] = {'btext1_1', 'btext1_2', 'btext1_3', 'btext1_4', 'btext1_5'}; + static const u64 text_b_tag[5] = {MULTI_CHAR('btext1_1'), MULTI_CHAR('btext1_2'), MULTI_CHAR('btext1_3'), MULTI_CHAR('btext1_4'), MULTI_CHAR('btext1_5')}; u32 stringId = i_stringID; if (stringId != field_0x3de) { field_0x3de = i_stringID; diff --git a/src/d/d_menu_ring.cpp b/src/d/d_menu_ring.cpp index 49c3e4000b..de1a5ab3a0 100644 --- a/src/d/d_menu_ring.cpp +++ b/src/d/d_menu_ring.cpp @@ -48,34 +48,34 @@ static procFunc stick_proc[] = { dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i_cStick, u8 i_ringOrigin) { static const u64 xy_text[5] = { - 'yx_text', 'yx_te_s1', 'yx_te_s2', 'yx_te_s3', 'yx_te_s4', + MULTI_CHAR('yx_text'), MULTI_CHAR('yx_te_s1'), MULTI_CHAR('yx_te_s2'), MULTI_CHAR('yx_te_s3'), MULTI_CHAR('yx_te_s4'), }; static const u64 fxy_text[5] = { - 'fyx_tex', 'fyx_te_1', 'fyx_te_2', 'fyx_te_3', 'fyx_te_4', + MULTI_CHAR('fyx_tex'), MULTI_CHAR('fyx_te_1'), MULTI_CHAR('fyx_te_2'), MULTI_CHAR('fyx_te_3'), MULTI_CHAR('fyx_te_4'), }; static const u64 c_text[5] = { - 'c_text', 'c_te_s1', 'c_te_s2', 'c_te_s3', 'c_te_s4', + MULTI_CHAR('c_text'), MULTI_CHAR('c_te_s1'), MULTI_CHAR('c_te_s2'), MULTI_CHAR('c_te_s3'), MULTI_CHAR('c_te_s4'), }; static const u64 fc_text[5] = { - 'fc_text', 'fc_te_s1', 'fc_te_s2', 'fc_te_s3', 'fc_te_s4', + MULTI_CHAR('fc_text'), MULTI_CHAR('fc_te_s1'), MULTI_CHAR('fc_te_s2'), MULTI_CHAR('fc_te_s3'), MULTI_CHAR('fc_te_s4'), }; static const u64 c_text1[5] = { - 'c_text1', 'c_texs1', 'c_texs2', 'c_texs3', 'c_texs4', + MULTI_CHAR('c_text1'), MULTI_CHAR('c_texs1'), MULTI_CHAR('c_texs2'), MULTI_CHAR('c_texs3'), MULTI_CHAR('c_texs4'), }; static const u64 fc_text1[5] = { - 'fc_text1', 'fc_texs1', 'fc_texs2', 'fc_texs3', 'fc_texs4', + MULTI_CHAR('fc_text1'), MULTI_CHAR('fc_texs1'), MULTI_CHAR('fc_texs2'), MULTI_CHAR('fc_texs3'), MULTI_CHAR('fc_texs4'), }; static const u64 t_on[5] = { - 'gr_t_on', 'g_tof_s5', 'g_tof_s6', 'g_tof_s7', 'g_tof_s8', + MULTI_CHAR('gr_t_on'), MULTI_CHAR('g_tof_s5'), MULTI_CHAR('g_tof_s6'), MULTI_CHAR('g_tof_s7'), MULTI_CHAR('g_tof_s8'), }; static const u64 ft_on[5] = { - 'fr_t_on', 'f_tof_s5', 'f_tof_s6', 'f_tof_s7', 'f_tof_s8', + MULTI_CHAR('fr_t_on'), MULTI_CHAR('f_tof_s5'), MULTI_CHAR('f_tof_s6'), MULTI_CHAR('f_tof_s7'), MULTI_CHAR('f_tof_s8'), }; static const u64 t_off[5] = { - 'gr_t_of', 'g_tof_s1', 'g_tof_s2', 'g_tof_s3', 'g_tof_s4', + MULTI_CHAR('gr_t_of'), MULTI_CHAR('g_tof_s1'), MULTI_CHAR('g_tof_s2'), MULTI_CHAR('g_tof_s3'), MULTI_CHAR('g_tof_s4'), }; static const u64 ft_off[5] = { - 'fr_t_of', 'f_tof_s1', 'f_tof_s2', 'f_tof_s3', 'f_tof_s4', + MULTI_CHAR('fr_t_of'), MULTI_CHAR('f_tof_s1'), MULTI_CHAR('f_tof_s2'), MULTI_CHAR('f_tof_s3'), MULTI_CHAR('f_tof_s4'), }; mpHeap = i_heap; @@ -264,12 +264,12 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i "SCRN/zelda_item_select_icon_message_ver2.blo", 0x20000, dComIfGp_getRingResArchive()); dPaneClass_showNullPane(mpScreen); - mpMessageParent = new CPaneMgrAlpha(mpScreen, 'n_all', 2, NULL); + mpMessageParent = new CPaneMgrAlpha(mpScreen, MULTI_CHAR('n_all'), 2, NULL); mpTextParent[0] = new CPaneMgr(mpScreen, 'r_n', 0, NULL); mpTextParent[1] = new CPaneMgr(mpScreen, 'c_n', 2, NULL); mpTextParent[1]->setAlphaRate(1.0f); mpTextParent[2] = NULL; - mpTextParent[3] = new CPaneMgr(mpScreen, 'c_sen_n', 2, NULL); + mpTextParent[3] = new CPaneMgr(mpScreen, MULTI_CHAR('c_sen_n'), 2, NULL); mpTextParent[4] = new CPaneMgr(mpScreen, 'gr_n', 2, NULL); mpTextParent[4]->hide(); for (int i = 5; i < 10; i++) { @@ -301,20 +301,20 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i mItemSlotParam2[i] = (mpItemBuf[i][0]->height / 48.0f * (texScale / 100.0f)); } } - mpScreen->search('r_btn_n')->hide(); + mpScreen->search(MULTI_CHAR('r_btn_n'))->hide(); if (mPlayerIsWolf) { - mpScreen->search('yx_te_s1')->hide(); - mpScreen->search('yx_te_s2')->hide(); - mpScreen->search('yx_te_s3')->hide(); - mpScreen->search('yx_te_s4')->hide(); - mpScreen->search('yx_text')->hide(); - mpScreen->search('fyx_te_1')->hide(); - mpScreen->search('fyx_te_2')->hide(); - mpScreen->search('fyx_te_3')->hide(); - mpScreen->search('fyx_te_4')->hide(); - mpScreen->search('fyx_tex')->hide(); - mpScreen->search('x_btn_n')->hide(); - mpScreen->search('y_btn_n')->hide(); + mpScreen->search(MULTI_CHAR('yx_te_s1'))->hide(); + mpScreen->search(MULTI_CHAR('yx_te_s2'))->hide(); + mpScreen->search(MULTI_CHAR('yx_te_s3'))->hide(); + mpScreen->search(MULTI_CHAR('yx_te_s4'))->hide(); + mpScreen->search(MULTI_CHAR('yx_text'))->hide(); + mpScreen->search(MULTI_CHAR('fyx_te_1'))->hide(); + mpScreen->search(MULTI_CHAR('fyx_te_2'))->hide(); + mpScreen->search(MULTI_CHAR('fyx_te_3'))->hide(); + mpScreen->search(MULTI_CHAR('fyx_te_4'))->hide(); + mpScreen->search(MULTI_CHAR('fyx_tex'))->hide(); + mpScreen->search(MULTI_CHAR('x_btn_n'))->hide(); + mpScreen->search(MULTI_CHAR('y_btn_n'))->hide(); } mpString = new dMsgString_c(); for (i = 0; i < 5; i++) { @@ -387,38 +387,38 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i "SCRN/zelda_item_select_icon3_spot.blo", 0x20000, dComIfGp_getRingResArchive()); dPaneClass_showNullPane(mpSpotScreen); - mpSpotParent = new CPaneMgrAlpha(mpSpotScreen, 'n_all', 2, NULL); + mpSpotParent = new CPaneMgrAlpha(mpSpotScreen, MULTI_CHAR('n_all'), 2, NULL); mpCenterScreen = new J2DScreen(); dPaneClass_setPriority(&mpResData[2], mpHeap, mpCenterScreen, "SCRN/zelda_item_select_icon3_center_parts.blo", 0x20000, dComIfGp_getRingResArchive()); dPaneClass_showNullPane(mpCenterScreen); - mpCenterParent = new CPaneMgrAlpha(mpCenterScreen, 'center_n', 2, NULL); - mpNameParent = new CPaneMgr(mpCenterScreen, 'label_n', 1, NULL); - mpCircle = new CPaneMgr(mpCenterScreen, 'circle_n', 2, NULL); + mpCenterParent = new CPaneMgrAlpha(mpCenterScreen, MULTI_CHAR('center_n'), 2, NULL); + mpNameParent = new CPaneMgr(mpCenterScreen, MULTI_CHAR('label_n'), 1, NULL); + mpCircle = new CPaneMgr(mpCenterScreen, MULTI_CHAR('circle_n'), 2, NULL); J2DTextBox* textBox[4]; #if VERSION == VERSION_GCN_JPN - textBox[0] = (J2DTextBox*)mpCenterScreen->search('item_n04'); - textBox[1] = (J2DTextBox*)mpCenterScreen->search('item_n05'); - textBox[2] = (J2DTextBox*)mpCenterScreen->search('item_n06'); - textBox[3] = (J2DTextBox*)mpCenterScreen->search('item_n07'); - J2DPane* pane = mpCenterScreen->search('fitem_n1'); + textBox[0] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('item_n04')); + textBox[1] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('item_n05')); + textBox[2] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('item_n06')); + textBox[3] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('item_n07')); + J2DPane* pane = mpCenterScreen->search(MULTI_CHAR('fitem_n1')); pane->mVisible = false; - pane = mpCenterScreen->search('fitem_n2'); + pane = mpCenterScreen->search(MULTI_CHAR('fitem_n2')); pane->mVisible = false; - pane = mpCenterScreen->search('fitem_n3'); + pane = mpCenterScreen->search(MULTI_CHAR('fitem_n3')); pane->mVisible = false; - pane = mpCenterScreen->search('fitem_n4'); + pane = mpCenterScreen->search(MULTI_CHAR('fitem_n4')); pane->mVisible = false; #else - textBox[0] = (J2DTextBox*)mpCenterScreen->search('fitem_n1'); - textBox[1] = (J2DTextBox*)mpCenterScreen->search('fitem_n2'); - textBox[2] = (J2DTextBox*)mpCenterScreen->search('fitem_n3'); - textBox[3] = (J2DTextBox*)mpCenterScreen->search('fitem_n4'); - mpCenterScreen->search('item_n04'); - mpCenterScreen->search('item_n05'); - mpCenterScreen->search('item_n06'); - mpCenterScreen->search('item_n07'); + textBox[0] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('fitem_n1')); + textBox[1] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('fitem_n2')); + textBox[2] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('fitem_n3')); + textBox[3] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('fitem_n4')); + mpCenterScreen->search(MULTI_CHAR('item_n04')); + mpCenterScreen->search(MULTI_CHAR('item_n05')); + mpCenterScreen->search(MULTI_CHAR('item_n06')); + mpCenterScreen->search(MULTI_CHAR('item_n07')); #endif for (int i = 0; i < 4; i++) { textBox[i]->setFont(mDoExt_getMesgFont()); @@ -614,7 +614,7 @@ void dMenu_Ring_c::_draw() { if (mStatus != STATUS_EXPLAIN && mPikariFlashingSpeed > 0.0f) { Vec pos; CPaneMgr paneMgr; - pos = paneMgr.getGlobalVtxCenter(mpScreen->search('gr_btn'), true, 0); + pos = paneMgr.getGlobalVtxCenter(mpScreen->search(MULTI_CHAR('gr_btn')), true, 0); dMeter2Info_getMeterClass()->getMeterDrawPtr()->drawPikari( pos.x, pos.y, &mPikariFlashingSpeed, g_ringHIO.mPikariScale, g_ringHIO.mPikariFrontOuter, g_ringHIO.mPikariFrontInner, g_ringHIO.mPikariBackOuter, g_ringHIO.mPikariBackInner, @@ -1102,15 +1102,15 @@ void dMenu_Ring_c::setScale() { void dMenu_Ring_c::setNameString(u32 i_stringID) { J2DTextBox* textBox[4]; #if VERSION == VERSION_GCN_JPN - textBox[0] = (J2DTextBox*)mpCenterScreen->search('item_n04'); - textBox[1] = (J2DTextBox*)mpCenterScreen->search('item_n05'); - textBox[2] = (J2DTextBox*)mpCenterScreen->search('item_n06'); - textBox[3] = (J2DTextBox*)mpCenterScreen->search('item_n07'); + textBox[0] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('item_n04')); + textBox[1] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('item_n05')); + textBox[2] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('item_n06')); + textBox[3] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('item_n07')); #else - textBox[0] = (J2DTextBox*)mpCenterScreen->search('fitem_n1'); - textBox[1] = (J2DTextBox*)mpCenterScreen->search('fitem_n2'); - textBox[2] = (J2DTextBox*)mpCenterScreen->search('fitem_n3'); - textBox[3] = (J2DTextBox*)mpCenterScreen->search('fitem_n4'); + textBox[0] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('fitem_n1')); + textBox[1] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('fitem_n2')); + textBox[2] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('fitem_n3')); + textBox[3] = (J2DTextBox*)mpCenterScreen->search(MULTI_CHAR('fitem_n4')); #endif if (mNameStringID != i_stringID) { for (int i = 0; i < 4; i++) { diff --git a/src/d/d_menu_save.cpp b/src/d/d_menu_save.cpp index 823ea577fc..3298543599 100644 --- a/src/d/d_menu_save.cpp +++ b/src/d/d_menu_save.cpp @@ -149,28 +149,28 @@ void dMenu_save_c::_create() { } void dMenu_save_c::screenSet() { - static u64 l_tagName0[3] = {'w_sel_00', 'w_sel_01', 'w_sel_02'}; - static u64 l_tagName000[2] = {'w_no_t', 'w_yes_t'}; - static u64 l_tagName000U[2] = {'f_no_t', 'f_yes_t'}; - static u64 l_tagName00[2] = {'w_modo', 'w_kete'}; - static u64 l_tagName00U[2] = {'f_modo', 'f_kete'}; - static u64 l_tagName3[3] = {'w_moyo00', 'w_moyo01', 'w_moyo02'}; - static u64 l_tagName4[3] = {'w_gold00', 'w_gold01', 'w_gold02'}; - static u64 l_tagName5[3] = {'w_go2_00', 'w_go2_01', 'w_go2_02'}; - static u64 l_tagName9[2] = {'w_no_m', 'w_yes_m'}; - static u64 l_tagName10[2] = {'w_no_g', 'w_yes_g'}; - static u64 l_tagName11[2] = {'w_no_gr', 'w_yes_gr'}; - static u64 l_tagName12[3] = {'w_bk_l00', 'w_bk_l01', 'w_bk_l02'}; + static u64 l_tagName0[3] = {MULTI_CHAR('w_sel_00'), MULTI_CHAR('w_sel_01'), MULTI_CHAR('w_sel_02')}; + static u64 l_tagName000[2] = {MULTI_CHAR('w_no_t'), MULTI_CHAR('w_yes_t')}; + static u64 l_tagName000U[2] = {MULTI_CHAR('f_no_t'), MULTI_CHAR('f_yes_t')}; + static u64 l_tagName00[2] = {MULTI_CHAR('w_modo'), MULTI_CHAR('w_kete')}; + static u64 l_tagName00U[2] = {MULTI_CHAR('f_modo'), MULTI_CHAR('f_kete')}; + static u64 l_tagName3[3] = {MULTI_CHAR('w_moyo00'), MULTI_CHAR('w_moyo01'), MULTI_CHAR('w_moyo02')}; + static u64 l_tagName4[3] = {MULTI_CHAR('w_gold00'), MULTI_CHAR('w_gold01'), MULTI_CHAR('w_gold02')}; + static u64 l_tagName5[3] = {MULTI_CHAR('w_go2_00'), MULTI_CHAR('w_go2_01'), MULTI_CHAR('w_go2_02')}; + static u64 l_tagName9[2] = {MULTI_CHAR('w_no_m'), MULTI_CHAR('w_yes_m')}; + static u64 l_tagName10[2] = {MULTI_CHAR('w_no_g'), MULTI_CHAR('w_yes_g')}; + static u64 l_tagName11[2] = {MULTI_CHAR('w_no_gr'), MULTI_CHAR('w_yes_gr')}; + static u64 l_tagName12[3] = {MULTI_CHAR('w_bk_l00'), MULTI_CHAR('w_bk_l01'), MULTI_CHAR('w_bk_l02')}; #if VERSION == VERSION_GCN_JPN - static u64 l_tagName21[2] = {'w_tabi_s', 'w_tabi_x'}; - static u64 l_tagName20[2] = {'w_er_msg', 'w_er_msR'}; + static u64 l_tagName21[2] = {MULTI_CHAR('w_tabi_s'), MULTI_CHAR('w_tabi_x')}; + static u64 l_tagName20[2] = {MULTI_CHAR('w_er_msg'), MULTI_CHAR('w_er_msR')}; #else - static u64 l_tagName21[2] = {'t_for', 't_for1'}; - static u64 l_tagName211[10] = {'tmoyou00', 'tmoyou01', 'tmoyou02', 'tmoyou03', 'tmoyou04', - 'tmoyou05', 'tmoyou06', 'tmoyou07', 'tmoyou08', 'tmoyou09'}; - static u64 l_tagName20[2] = {'er_for0', 'er_for1'}; + static u64 l_tagName21[2] = {MULTI_CHAR('t_for'), MULTI_CHAR('t_for1')}; + static u64 l_tagName211[10] = {MULTI_CHAR('tmoyou00'), MULTI_CHAR('tmoyou01'), MULTI_CHAR('tmoyou02'), MULTI_CHAR('tmoyou03'), MULTI_CHAR('tmoyou04'), + MULTI_CHAR('tmoyou05'), MULTI_CHAR('tmoyou06'), MULTI_CHAR('tmoyou07'), MULTI_CHAR('tmoyou08'), MULTI_CHAR('tmoyou09')}; + static u64 l_tagName20[2] = {MULTI_CHAR('er_for0'), MULTI_CHAR('er_for1')}; #endif - static u64 l_tagName13[3] = {'w_dat_i0', 'w_dat_i1', 'w_dat_i2'}; + static u64 l_tagName13[3] = {MULTI_CHAR('w_dat_i0'), MULTI_CHAR('w_dat_i1'), MULTI_CHAR('w_dat_i2')}; static u8 l_msgNum0[2] = {0x08, 0x07}; static u8 l_msgNum[2] = {0x54, 0x55}; @@ -192,15 +192,15 @@ void dMenu_save_c::screenSet() { field_0x48->searchUpdateMaterialID(mSaveSel.Scr); field_0x4c->searchUpdateMaterialID(mSaveSel.Scr); - mpSelectMoveBase = new CPaneMgr(mSaveSel.Scr, 'w_move_n', 0, NULL); - field_0xa0 = mSaveSel.Scr->search('wmenu_n'); + mpSelectMoveBase = new CPaneMgr(mSaveSel.Scr, MULTI_CHAR('w_move_n'), 0, NULL); + field_0xa0 = mSaveSel.Scr->search(MULTI_CHAR('wmenu_n')); for (int i = 0; i < 3; i++) { mpSelData[i] = new CPaneMgr(mSaveSel.Scr, l_tagName0[i], 0, NULL); } - mpNoYes[0] = new CPaneMgr(mSaveSel.Scr, 'w_no_n', 0, NULL); - mpNoYes[1] = new CPaneMgr(mSaveSel.Scr, 'w_yes_n', 0, NULL); + mpNoYes[0] = new CPaneMgr(mSaveSel.Scr, MULTI_CHAR('w_no_n'), 0, NULL); + mpNoYes[1] = new CPaneMgr(mSaveSel.Scr, MULTI_CHAR('w_yes_n'), 0, NULL); for (int i = 0; i < 2; i++) { #if VERSION == VERSION_GCN_JPN @@ -217,17 +217,17 @@ void dMenu_save_c::screenSet() { ((J2DTextBox*)mpNoYesTxt[i]->getPanePtr())->setString(message); } - mSaveSel.Scr->search('Wi_btn_n')->hide(); - mSaveSel.Scr->search('GC_btn_n')->show(); + mSaveSel.Scr->search(MULTI_CHAR('Wi_btn_n'))->hide(); + mSaveSel.Scr->search(MULTI_CHAR('GC_btn_n'))->show(); - mpBBtnIcon = new CPaneMgrAlpha(mSaveSel.Scr, 'w_nbbtn', 2, NULL); - mpABtnIcon = new CPaneMgrAlpha(mSaveSel.Scr, 'w_nabtn', 2, NULL); + mpBBtnIcon = new CPaneMgrAlpha(mSaveSel.Scr, MULTI_CHAR('w_nbbtn'), 2, NULL); + mpABtnIcon = new CPaneMgrAlpha(mSaveSel.Scr, MULTI_CHAR('w_nabtn'), 2, NULL); #if VERSION == VERSION_GCN_JPN - mpBackTxt = new CPaneMgrAlpha(mSaveSel.Scr, 'w_modo', 2, NULL); - mpConfirmTxt = new CPaneMgrAlpha(mSaveSel.Scr, 'w_kete', 2, NULL); + mpBackTxt = new CPaneMgrAlpha(mSaveSel.Scr, MULTI_CHAR('w_modo'), 2, NULL); + mpConfirmTxt = new CPaneMgrAlpha(mSaveSel.Scr, MULTI_CHAR('w_kete'), 2, NULL); #else - mpBackTxt = new CPaneMgrAlpha(mSaveSel.Scr, 'f_modo', 2, NULL); - mpConfirmTxt = new CPaneMgrAlpha(mSaveSel.Scr, 'f_kete', 2, NULL); + mpBackTxt = new CPaneMgrAlpha(mSaveSel.Scr, MULTI_CHAR('f_modo'), 2, NULL); + mpConfirmTxt = new CPaneMgrAlpha(mSaveSel.Scr, MULTI_CHAR('f_kete'), 2, NULL); #endif mpBackTxt->setAlpha(0); @@ -313,11 +313,11 @@ void dMenu_save_c::screenSet() { } #if VERSION == VERSION_GCN_JPN - mSaveSel.Scr->search('t_for')->hide(); - mSaveSel.Scr->search('t_for1')->hide(); + mSaveSel.Scr->search(MULTI_CHAR('t_for'))->hide(); + mSaveSel.Scr->search(MULTI_CHAR('t_for1'))->hide(); #else - mSaveSel.Scr->search('w_tabi_s')->hide(); - mSaveSel.Scr->search('w_tabi_x')->hide(); + mSaveSel.Scr->search(MULTI_CHAR('w_tabi_s'))->hide(); + mSaveSel.Scr->search(MULTI_CHAR('w_tabi_x'))->hide(); for (int i = 0; i < 10; i++) { mSaveSel.Scr->search(l_tagName211[i])->hide(); @@ -345,13 +345,13 @@ void dMenu_save_c::screenSet() { mpHeaderTxtPane[1]->setAlpha(0); mHeaderTxtType = 0; - field_0xb4 = mSaveSel.Scr->search('w_er_n'); + field_0xb4 = mSaveSel.Scr->search(MULTI_CHAR('w_er_n')); #if VERSION == VERSION_GCN_JPN - mSaveSel.Scr->search('er_for0')->hide(); - mSaveSel.Scr->search('er_for1')->hide(); + mSaveSel.Scr->search(MULTI_CHAR('er_for0'))->hide(); + mSaveSel.Scr->search(MULTI_CHAR('er_for1'))->hide(); #else - mSaveSel.Scr->search('w_er_msg')->hide(); - mSaveSel.Scr->search('w_er_msR')->hide(); + mSaveSel.Scr->search(MULTI_CHAR('w_er_msg'))->hide(); + mSaveSel.Scr->search(MULTI_CHAR('w_er_msR'))->hide(); #endif for (int i = 0; i < 2; i++) { @@ -390,7 +390,7 @@ void dMenu_save_c::screenSet() { mSelIcon->setPos(pos.x, pos.y, mpSelData[mSelectedFile]->getPanePtr(), true); mSelIcon->setAlphaRate(0.0f); - J2DPane* pane = mSaveSel.Scr->search('Nm_02'); + J2DPane* pane = mSaveSel.Scr->search(MULTI_CHAR('Nm_02')); pane->setAnimation(field_0x40); field_0x64 = 0; field_0x50 = 1; @@ -793,7 +793,7 @@ void dMenu_save_c::saveQuestion() { if (mYesNoCursor == CURSOR_YES) { field_0x1c0 = 1; - J2DPane* pane = mSaveSel.Scr->search('Nm_02'); + J2DPane* pane = mSaveSel.Scr->search(MULTI_CHAR('Nm_02')); pane->setAnimation(field_0x40); field_0xd2 = 0; diff --git a/src/d/d_menu_skill.cpp b/src/d/d_menu_skill.cpp index 8aaececff3..a1c4e76a31 100644 --- a/src/d/d_menu_skill.cpp +++ b/src/d/d_menu_skill.cpp @@ -360,57 +360,57 @@ void dMenu_Skill_c::read_close_move() { void dMenu_Skill_c::screenSetMenu() { static const u64 tag_sub0[7] = { - 'menu_t0s', 'menu_t1s', 'menu_t2s', 'menu_t3s', 'menu_t4s', 'menu_t5s', 'menu_t51', + MULTI_CHAR('menu_t0s'), MULTI_CHAR('menu_t1s'), MULTI_CHAR('menu_t2s'), MULTI_CHAR('menu_t3s'), MULTI_CHAR('menu_t4s'), MULTI_CHAR('menu_t5s'), MULTI_CHAR('menu_t51'), }; static const u64 tag_sub1[7] = { - 'menu_t0', 'menu_t1', 'menu_t2', 'menu_t3', 'menu_t4', 'menu_t5', 'menu_t6', + MULTI_CHAR('menu_t0'), MULTI_CHAR('menu_t1'), MULTI_CHAR('menu_t2'), MULTI_CHAR('menu_t3'), MULTI_CHAR('menu_t4'), MULTI_CHAR('menu_t5'), MULTI_CHAR('menu_t6'), }; static const u64 tag_name0[7] = { - 'menu_t6s', 'menu_f7s', 'menu_f8s', 'menu_t9s', 'menu_10s', 'menu_11s', 'menu_112', + MULTI_CHAR('menu_t6s'), MULTI_CHAR('menu_f7s'), MULTI_CHAR('menu_f8s'), MULTI_CHAR('menu_t9s'), MULTI_CHAR('menu_10s'), MULTI_CHAR('menu_11s'), MULTI_CHAR('menu_112'), }; static const u64 tag_name1[7] = { - 'menu_f6', 'menu_f7', 'menu_t8', 'menu_t9', 'menu_t10', 'menu_t11', 'menu_t01', + MULTI_CHAR('menu_f6'), MULTI_CHAR('menu_f7'), MULTI_CHAR('menu_t8'), MULTI_CHAR('menu_t9'), MULTI_CHAR('menu_t10'), MULTI_CHAR('menu_t11'), MULTI_CHAR('menu_t01'), }; static const u64 ftag_sub0[7] = { - 'fenu_t0s', 'fenu_t1s', 'fenu_t2s', 'fenu_t3s', 'fenu_t4s', 'fenu_t5s', 'fenu_t6s', + MULTI_CHAR('fenu_t0s'), MULTI_CHAR('fenu_t1s'), MULTI_CHAR('fenu_t2s'), MULTI_CHAR('fenu_t3s'), MULTI_CHAR('fenu_t4s'), MULTI_CHAR('fenu_t5s'), MULTI_CHAR('fenu_t6s'), }; static const u64 ftag_sub1[7] = { - 'fenu_t0', 'fenu_t1', 'fenu_t2', 'fenu_t3', 'fenu_t4', 'fenu_t5', 'fenu_t6', + MULTI_CHAR('fenu_t0'), MULTI_CHAR('fenu_t1'), MULTI_CHAR('fenu_t2'), MULTI_CHAR('fenu_t3'), MULTI_CHAR('fenu_t4'), MULTI_CHAR('fenu_t5'), MULTI_CHAR('fenu_t6'), }; static const u64 ftag_name0[7] = { - 'fenu_t7s', 'fenu_t8s', 'fenu_t9s', 'fenu_10s', 'fenu_11s', 'fenu_12s', 'fenu_13s', + MULTI_CHAR('fenu_t7s'), MULTI_CHAR('fenu_t8s'), MULTI_CHAR('fenu_t9s'), MULTI_CHAR('fenu_10s'), MULTI_CHAR('fenu_11s'), MULTI_CHAR('fenu_12s'), MULTI_CHAR('fenu_13s'), }; static const u64 ftag_name1[7] = { - 'fenu_t7', 'fenu_t8', 'fenu_t9', 'fenu_10', 'fenu_11', 'fenu_12', 'fenu_13', + MULTI_CHAR('fenu_t7'), MULTI_CHAR('fenu_t8'), MULTI_CHAR('fenu_t9'), MULTI_CHAR('fenu_10'), MULTI_CHAR('fenu_11'), MULTI_CHAR('fenu_12'), MULTI_CHAR('fenu_13'), }; static const u64 tag_letter[7] = { - 'let_00_n', 'let_01_n', 'let_02_n', 'let_03_n', 'let_04_n', 'let_05_n', 'let_06_n', + MULTI_CHAR('let_00_n'), MULTI_CHAR('let_01_n'), MULTI_CHAR('let_02_n'), MULTI_CHAR('let_03_n'), MULTI_CHAR('let_04_n'), MULTI_CHAR('let_05_n'), MULTI_CHAR('let_06_n'), }; static const u64 tag_frame[7] = { - 'flame_00', 'flame_01', 'flame_02', 'flame_03', 'flame_04', 'flame_05', 'flame_06', + MULTI_CHAR('flame_00'), MULTI_CHAR('flame_01'), MULTI_CHAR('flame_02'), MULTI_CHAR('flame_03'), MULTI_CHAR('flame_04'), MULTI_CHAR('flame_05'), MULTI_CHAR('flame_06'), }; static const u64 tag_maki[7] = { - 'maki_0n', 'maki_1n', 'maki_2n', 'maki_3n', 'maki_4n', 'maki_5n', 'maki_6n', + MULTI_CHAR('maki_0n'), MULTI_CHAR('maki_1n'), MULTI_CHAR('maki_2n'), MULTI_CHAR('maki_3n'), MULTI_CHAR('maki_4n'), MULTI_CHAR('maki_5n'), MULTI_CHAR('maki_6n'), }; static const u64 tag_makic[7] = { - 'maki_0', 'maki_1', 'maki_2', 'maki_3', 'maki_4', 'maki_5', 'maki_6', + MULTI_CHAR('maki_0'), MULTI_CHAR('maki_1'), MULTI_CHAR('maki_2'), MULTI_CHAR('maki_3'), MULTI_CHAR('maki_4'), MULTI_CHAR('maki_5'), MULTI_CHAR('maki_6'), }; mpMenuScreen = new J2DScreen(); mpMenuScreen->setPriority("zelda_ougi_window.blo", 0x20000, mpArchive); dPaneClass_showNullPane(mpMenuScreen); - mpParent = new CPaneMgr(mpMenuScreen, 'n_all', 2, NULL); + mpParent = new CPaneMgr(mpMenuScreen, MULTI_CHAR('n_all'), 2, NULL); mpParent->setAlphaRate(0.0f); for (int i = 0; i < 7; i++) { #if VERSION == VERSION_GCN_JPN @@ -469,11 +469,11 @@ void dMenu_Skill_c::screenSetMenu() { } } #if VERSION == VERSION_GCN_JPN - J2DTextBox* textBox = (J2DTextBox*)mpMenuScreen->search('t_t00'); - mpMenuScreen->search('f_t00')->hide(); + J2DTextBox* textBox = (J2DTextBox*)mpMenuScreen->search(MULTI_CHAR('t_t00')); + mpMenuScreen->search(MULTI_CHAR('f_t00'))->hide(); #else - J2DTextBox* textBox = (J2DTextBox*)mpMenuScreen->search('f_t00'); - mpMenuScreen->search('t_t00')->hide(); + J2DTextBox* textBox = (J2DTextBox*)mpMenuScreen->search(MULTI_CHAR('f_t00')); + mpMenuScreen->search(MULTI_CHAR('t_t00'))->hide(); #endif textBox->setFont(mDoExt_getSubFont()); textBox->setString(0x200, ""); @@ -482,29 +482,29 @@ void dMenu_Skill_c::screenSetMenu() { void dMenu_Skill_c::screenSetLetter() { static const u64 name_tag[4] = { - 'item_n04', - 'item_n05', - 'item_n06', - 'item_n07', + MULTI_CHAR('item_n04'), + MULTI_CHAR('item_n05'), + MULTI_CHAR('item_n06'), + MULTI_CHAR('item_n07'), }; static const u64 fame_tag[4] = { - 'f_item_1', - 'f_item_2', - 'f_item_3', - 'f_item_4', + MULTI_CHAR('f_item_1'), + MULTI_CHAR('f_item_2'), + MULTI_CHAR('f_item_3'), + MULTI_CHAR('f_item_4'), }; mpLetterScreen = new J2DScreen(); mpLetterScreen->setPriority("zelda_ougi_info.blo", 0x20000, mpArchive); dPaneClass_showNullPane(mpLetterScreen); #if VERSION == VERSION_GCN_JPN - mpTextPane = new CPaneMgr(mpLetterScreen, 'mg_3line', 0, NULL); - mpLetterScreen->search('n_e4line')->hide(); + mpTextPane = new CPaneMgr(mpLetterScreen, MULTI_CHAR('mg_3line'), 0, NULL); + mpLetterScreen->search(MULTI_CHAR('n_e4line'))->hide(); #else - mpTextPane = new CPaneMgr(mpLetterScreen, 'mg_e4lin', 0, NULL); - mpLetterScreen->search('n_3line')->hide(); + mpTextPane = new CPaneMgr(mpLetterScreen, MULTI_CHAR('mg_e4lin'), 0, NULL); + mpLetterScreen->search(MULTI_CHAR('n_3line'))->hide(); #endif - mpExpName = new CPaneMgr(mpLetterScreen, 'label_n', 0, NULL); + mpExpName = new CPaneMgr(mpLetterScreen, MULTI_CHAR('label_n'), 0, NULL); J2DTextBox* paneFont = (J2DTextBox*)mpTextPane->getPanePtr(); paneFont->setFont(mDoExt_getMesgFont()); J2DTextBox* paneString = (J2DTextBox*)mpTextPane->getPanePtr(); @@ -520,7 +520,7 @@ void dMenu_Skill_c::screenSetLetter() { mpNameString[i]->setFont(mDoExt_getMesgFont()); mpNameString[i]->setString(0x40, ""); } - mpTextParent = new CPaneMgr(mpLetterScreen, 'n_all', 2, NULL); + mpTextParent = new CPaneMgr(mpLetterScreen, MULTI_CHAR('n_all'), 2, NULL); mpTextParent->setAlphaRate(0.0f); ResTIMG* timg = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti"); mpBlackTex = new J2DPicture(timg); @@ -530,10 +530,10 @@ void dMenu_Skill_c::screenSetLetter() { void dMenu_Skill_c::screenSetDoIcon() { static const u64 text_a_tag[5] = { - 'atext1_1', 'atext1_2', 'atext1_3', 'atext1_4', 'atext1_5', + MULTI_CHAR('atext1_1'), MULTI_CHAR('atext1_2'), MULTI_CHAR('atext1_3'), MULTI_CHAR('atext1_4'), MULTI_CHAR('atext1_5'), }; static const u64 text_b_tag[5] = { - 'btext1_1', 'btext1_2', 'btext1_3', 'btext1_4', 'btext1_5', + MULTI_CHAR('btext1_1'), MULTI_CHAR('btext1_2'), MULTI_CHAR('btext1_3'), MULTI_CHAR('btext1_4'), MULTI_CHAR('btext1_5'), }; mpIconScreen = new J2DScreen(); mpIconScreen->setPriority("zelda_collect_soubi_do_icon_parts.blo", 0x20000, mpArchive); diff --git a/src/d/d_meter2_draw.cpp b/src/d/d_meter2_draw.cpp index 5be39371cd..80a1af9b98 100644 --- a/src/d/d_meter2_draw.cpp +++ b/src/d/d_meter2_draw.cpp @@ -50,7 +50,7 @@ dMeter2Draw_c::dMeter2Draw_c(JKRExpHeap* mp_heap) { JUT_ASSERT(0, fg != false); dPaneClass_showNullPane(mpScreen); - mpScreen->search('ju_ring5')->hide(); + mpScreen->search(MULTI_CHAR('ju_ring5'))->hide(); field_0x73c = 0.0f; for (int i = 0; i < 2; i++) { @@ -71,10 +71,10 @@ dMeter2Draw_c::dMeter2Draw_c(JKRExpHeap* mp_heap) { JUT_ASSERT(0, fg != false); dPaneClass_showNullPane(mpPikariScreen); - mpPikariParent = new CPaneMgr(mpPikariScreen, 'pika_n', 0, NULL); + mpPikariParent = new CPaneMgr(mpPikariScreen, MULTI_CHAR('pika_n'), 0, NULL); JUT_ASSERT(0, mpPikariParent != NULL); - mPikariBlack = static_cast(mpPikariScreen->search('pika00'))->getBlack(); - mPikariWhite = static_cast(mpPikariScreen->search('pika00'))->getWhite(); + mPikariBlack = static_cast(mpPikariScreen->search(MULTI_CHAR('pika00')))->getBlack(); + mPikariWhite = static_cast(mpPikariScreen->search(MULTI_CHAR('pika00')))->getWhite(); OSInitFastCast(); void* pikari_bck = JKRGetNameResource("zelda_icon_pikari.bck", dComIfGp_getMain2DArchive()); @@ -86,14 +86,14 @@ dMeter2Draw_c::dMeter2Draw_c(JKRExpHeap* mp_heap) { mPikariBpk->searchUpdateMaterialID(mpPikariScreen); playPikariBpkAnimation(1.0f); - mpParent = new CPaneMgr(mpScreen, 'n_all', 2, NULL); + mpParent = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 2, NULL); JUT_ASSERT(0, mpParent != NULL); - static u64 const a_tag[] = {'cont_at1', 'cont_at2', 'cont_at3', 'cont_at4', 'cont_at'}; - static u64 const b_tag[] = {'cont_bt1', 'cont_bt2', 'cont_bt3', 'cont_bt4', 'cont_bt'}; - static u64 const z_tag[] = {'cont_zt1', 'cont_zt2', 'cont_zt3', 'cont_zt4', 'cont_rt'}; - static u64 const x_tag[] = {'cont_xt1', 'cont_xt2', 'cont_xt3', 'cont_xt4', 'cont_xt5'}; - static u64 const y_tag[] = {'cont_yt1', 'cont_yt2', 'cont_yt3', 'cont_yt4', 'cont_yt5'}; + static u64 const a_tag[] = {MULTI_CHAR('cont_at1'), MULTI_CHAR('cont_at2'), MULTI_CHAR('cont_at3'), MULTI_CHAR('cont_at4'), MULTI_CHAR('cont_at')}; + static u64 const b_tag[] = {MULTI_CHAR('cont_bt1'), MULTI_CHAR('cont_bt2'), MULTI_CHAR('cont_bt3'), MULTI_CHAR('cont_bt4'), MULTI_CHAR('cont_bt')}; + static u64 const z_tag[] = {MULTI_CHAR('cont_zt1'), MULTI_CHAR('cont_zt2'), MULTI_CHAR('cont_zt3'), MULTI_CHAR('cont_zt4'), MULTI_CHAR('cont_rt')}; + static u64 const x_tag[] = {MULTI_CHAR('cont_xt1'), MULTI_CHAR('cont_xt2'), MULTI_CHAR('cont_xt3'), MULTI_CHAR('cont_xt4'), MULTI_CHAR('cont_xt5')}; + static u64 const y_tag[] = {MULTI_CHAR('cont_yt1'), MULTI_CHAR('cont_yt2'), MULTI_CHAR('cont_yt3'), MULTI_CHAR('cont_yt4'), MULTI_CHAR('cont_yt5')}; for (int i = 0; i < 5; i++) { mpAText[i] = new CPaneMgr(mpScreen, a_tag[i], 0, NULL); @@ -721,36 +721,36 @@ void dMeter2Draw_c::initLife() { } static u64 const life_tag[] = { - 'hpb_00', 'hpb_01', 'hpb_02', 'hpb_03', 'hpb_04', 'hpb_05', 'hpb_06', - 'hpb_07', 'hpb_08', 'hpb_09', 'hpb_10', 'hpb_11', 'hpb_12', 'hpb_13', - 'hpb_14', 'hpb_15', 'hpb_16', 'hpb_17', 'hpb_18', 'hpb_19', + MULTI_CHAR('hpb_00'), MULTI_CHAR('hpb_01'), MULTI_CHAR('hpb_02'), MULTI_CHAR('hpb_03'), MULTI_CHAR('hpb_04'), MULTI_CHAR('hpb_05'), MULTI_CHAR('hpb_06'), + MULTI_CHAR('hpb_07'), MULTI_CHAR('hpb_08'), MULTI_CHAR('hpb_09'), MULTI_CHAR('hpb_10'), MULTI_CHAR('hpb_11'), MULTI_CHAR('hpb_12'), MULTI_CHAR('hpb_13'), + MULTI_CHAR('hpb_14'), MULTI_CHAR('hpb_15'), MULTI_CHAR('hpb_16'), MULTI_CHAR('hpb_17'), MULTI_CHAR('hpb_18'), MULTI_CHAR('hpb_19'), }; static u64 const mark_tag[] = { - 'heartn00', 'heartn01', 'heartn02', 'heartn03', 'heartn04', 'heartn05', 'heartn06', - 'heartn07', 'heartn08', 'heartn09', 'heartn10', 'heartn11', 'heartn12', 'heartn13', - 'heartn14', 'heartn15', 'heartn16', 'heartn17', 'heartn18', 'heartn19', + MULTI_CHAR('heartn00'), MULTI_CHAR('heartn01'), MULTI_CHAR('heartn02'), MULTI_CHAR('heartn03'), MULTI_CHAR('heartn04'), MULTI_CHAR('heartn05'), MULTI_CHAR('heartn06'), + MULTI_CHAR('heartn07'), MULTI_CHAR('heartn08'), MULTI_CHAR('heartn09'), MULTI_CHAR('heartn10'), MULTI_CHAR('heartn11'), MULTI_CHAR('heartn12'), MULTI_CHAR('heartn13'), + MULTI_CHAR('heartn14'), MULTI_CHAR('heartn15'), MULTI_CHAR('heartn16'), MULTI_CHAR('heartn17'), MULTI_CHAR('heartn18'), MULTI_CHAR('heartn19'), }; static u64 const base_tag[] = { - 'h_ba_n00', 'h_ba_n01', 'h_ba_n02', 'h_ba_n03', 'h_ba_n04', 'h_ba_n05', 'h_ba_n06', - 'h_ba_n07', 'h_ba_n08', 'h_ba_n09', 'h_ba_n10', 'h_ba_n11', 'h_ba_n12', 'h_ba_n13', - 'h_ba_n14', 'h_ba_n15', 'h_ba_n16', 'h_ba_n17', 'h_ba_n18', 'h_ba_n19', + MULTI_CHAR('h_ba_n00'), MULTI_CHAR('h_ba_n01'), MULTI_CHAR('h_ba_n02'), MULTI_CHAR('h_ba_n03'), MULTI_CHAR('h_ba_n04'), MULTI_CHAR('h_ba_n05'), MULTI_CHAR('h_ba_n06'), + MULTI_CHAR('h_ba_n07'), MULTI_CHAR('h_ba_n08'), MULTI_CHAR('h_ba_n09'), MULTI_CHAR('h_ba_n10'), MULTI_CHAR('h_ba_n11'), MULTI_CHAR('h_ba_n12'), MULTI_CHAR('h_ba_n13'), + MULTI_CHAR('h_ba_n14'), MULTI_CHAR('h_ba_n15'), MULTI_CHAR('h_ba_n16'), MULTI_CHAR('h_ba_n17'), MULTI_CHAR('h_ba_n18'), MULTI_CHAR('h_ba_n19'), }; static u64 const lifet1_tag[] = { - 'hear_00s', 'hear_01s', 'hear_02s', 'hear_03s', 'hear_04s', 'hear_05s', 'hear_06s', - 'hear_07s', 'hear_08s', 'hear_09s', 'hear_10s', 'hear_11s', 'hear_12s', 'hear_13s', - 'hear_14s', 'hear_15s', 'hear_16s', 'hear_17s', 'hear_18s', 'hear_19s', + MULTI_CHAR('hear_00s'), MULTI_CHAR('hear_01s'), MULTI_CHAR('hear_02s'), MULTI_CHAR('hear_03s'), MULTI_CHAR('hear_04s'), MULTI_CHAR('hear_05s'), MULTI_CHAR('hear_06s'), + MULTI_CHAR('hear_07s'), MULTI_CHAR('hear_08s'), MULTI_CHAR('hear_09s'), MULTI_CHAR('hear_10s'), MULTI_CHAR('hear_11s'), MULTI_CHAR('hear_12s'), MULTI_CHAR('hear_13s'), + MULTI_CHAR('hear_14s'), MULTI_CHAR('hear_15s'), MULTI_CHAR('hear_16s'), MULTI_CHAR('hear_17s'), MULTI_CHAR('hear_18s'), MULTI_CHAR('hear_19s'), }; static u64 const lifet2_tag[] = { - 'hear_00', 'hear_01', 'hear_02', 'hear_03', 'hear_04', 'hear_05', 'hear_06', - 'hear_07', 'hear_08', 'hear_09', 'hear_10', 'hear_11', 'hear_12', 'hear_13', - 'hear_14', 'hear_15', 'hear_16', 'hear_17', 'hear_18', 'hear_19', + MULTI_CHAR('hear_00'), MULTI_CHAR('hear_01'), MULTI_CHAR('hear_02'), MULTI_CHAR('hear_03'), MULTI_CHAR('hear_04'), MULTI_CHAR('hear_05'), MULTI_CHAR('hear_06'), + MULTI_CHAR('hear_07'), MULTI_CHAR('hear_08'), MULTI_CHAR('hear_09'), MULTI_CHAR('hear_10'), MULTI_CHAR('hear_11'), MULTI_CHAR('hear_12'), MULTI_CHAR('hear_13'), + MULTI_CHAR('hear_14'), MULTI_CHAR('hear_15'), MULTI_CHAR('hear_16'), MULTI_CHAR('hear_17'), MULTI_CHAR('hear_18'), MULTI_CHAR('hear_19'), }; - mpLifeParent = new CPaneMgr(mpScreen, 'heart_n', 2, NULL); + mpLifeParent = new CPaneMgr(mpScreen, MULTI_CHAR('heart_n'), 2, NULL); JUT_ASSERT(0, mpLifeParent != NULL); for (int i = 0; i < 20; i++) { @@ -770,7 +770,7 @@ void dMeter2Draw_c::initLife() { JUT_ASSERT(0, mpLifeTexture[i][1] != NULL); } - mpBigHeart = new CPaneMgr(mpScreen, 'bigh_n', 2, NULL); + mpBigHeart = new CPaneMgr(mpScreen, MULTI_CHAR('bigh_n'), 2, NULL); JUT_ASSERT(0, mpBigHeart != NULL); mpLifeParent->setAlphaRate(0.0f); @@ -791,20 +791,20 @@ void dMeter2Draw_c::initMagic() { field_0x550 = 0.0f; field_0x554 = 0.0f; - mpMagicParent = new CPaneMgr(mpKanteraScreen, 'magic_n', 2, NULL); + mpMagicParent = new CPaneMgr(mpKanteraScreen, MULTI_CHAR('magic_n'), 2, NULL); JUT_ASSERT(0, mpMagicParent != NULL); - mpMagicBase = new CPaneMgr(mpKanteraScreen, 'mm_base', 0, NULL); + mpMagicBase = new CPaneMgr(mpKanteraScreen, MULTI_CHAR('mm_base'), 0, NULL); JUT_ASSERT(0, mpMagicBase != NULL); - mpMagicFrameL = new CPaneMgr(mpKanteraScreen, 'm_w_l_n', 2, NULL); + mpMagicFrameL = new CPaneMgr(mpKanteraScreen, MULTI_CHAR('m_w_l_n'), 2, NULL); JUT_ASSERT(0, mpMagicFrameL != NULL); mpMagicFrameR = - new CPaneMgr(mpKanteraScreen, 'm_w_r_n', 2, NULL); + new CPaneMgr(mpKanteraScreen, MULTI_CHAR('m_w_r_n'), 2, NULL); JUT_ASSERT(0, mpMagicFrameR != NULL); - mpMagicMeter = new CPaneMgr(mpKanteraScreen, 'mm_00', 0, NULL); + mpMagicMeter = new CPaneMgr(mpKanteraScreen, MULTI_CHAR('mm_00'), 0, NULL); JUT_ASSERT(0, mpMagicMeter != NULL); OSInitFastCast(); @@ -851,7 +851,7 @@ void dMeter2Draw_c::initMagic() { } void dMeter2Draw_c::initLightDrop() { - mpLightDropParent = new CPaneMgr(mpScreen, 's_tuta_n', 2, NULL); + mpLightDropParent = new CPaneMgr(mpScreen, MULTI_CHAR('s_tuta_n'), 2, NULL); JUT_ASSERT(0, mpLightDropParent != NULL); static u64 const tuta_0[] = { @@ -860,13 +860,13 @@ void dMeter2Draw_c::initLightDrop() { }; static u64 const tuta_1[] = { - 'sl_00', 'sl_01', 'sl_02', 'sl_03', 'sl_04', 'sl_05', 'sl_06', 'sl_07', - 'sl_08', 'sl_09', 'sl_10', 'sl_11', 'sl_12', 'sl_13', 'sl_14', 'sl_15', + MULTI_CHAR('sl_00'), MULTI_CHAR('sl_01'), MULTI_CHAR('sl_02'), MULTI_CHAR('sl_03'), MULTI_CHAR('sl_04'), MULTI_CHAR('sl_05'), MULTI_CHAR('sl_06'), MULTI_CHAR('sl_07'), + MULTI_CHAR('sl_08'), MULTI_CHAR('sl_09'), MULTI_CHAR('sl_10'), MULTI_CHAR('sl_11'), MULTI_CHAR('sl_12'), MULTI_CHAR('sl_13'), MULTI_CHAR('sl_14'), MULTI_CHAR('sl_15'), }; static u64 const tuta_2[] = { - 'scp_00', 'scp_01', 'scp_02', 'scp_03', 'scp_04', 'scp_05', 'scp_06', 'scp_07', - 'scp_08', 'scp_09', 'scp_10', 'scp_11', 'scp_12', 'scp_13', 'scp_14', 'scp_15', + MULTI_CHAR('scp_00'), MULTI_CHAR('scp_01'), MULTI_CHAR('scp_02'), MULTI_CHAR('scp_03'), MULTI_CHAR('scp_04'), MULTI_CHAR('scp_05'), MULTI_CHAR('scp_06'), MULTI_CHAR('scp_07'), + MULTI_CHAR('scp_08'), MULTI_CHAR('scp_09'), MULTI_CHAR('scp_10'), MULTI_CHAR('scp_11'), MULTI_CHAR('scp_12'), MULTI_CHAR('scp_13'), MULTI_CHAR('scp_14'), MULTI_CHAR('scp_15'), }; for (int i = 0; i < 16; i++) { @@ -880,10 +880,10 @@ void dMeter2Draw_c::initLightDrop() { JUT_ASSERT(0, mpSIParts[i][2] != NULL); } - mpSIParent[0] = new CPaneMgr(mpScreen, 'tuta_n', 2, NULL); + mpSIParent[0] = new CPaneMgr(mpScreen, MULTI_CHAR('tuta_n'), 2, NULL); JUT_ASSERT(0, mpSIParent[0] != NULL); - mpSIParent[1] = new CPaneMgr(mpScreen, 's_null', 2, NULL); + mpSIParent[1] = new CPaneMgr(mpScreen, MULTI_CHAR('s_null'), 2, NULL); JUT_ASSERT(0, mpSIParent[1] != NULL); mpLightDropParent->setAlphaRate(0.0f); @@ -907,12 +907,12 @@ void dMeter2Draw_c::initLightDrop() { } void dMeter2Draw_c::initRupeeKey() { - mpRupeeKeyParent = new CPaneMgr(mpScreen, 'r_k_n', 2, NULL); + mpRupeeKeyParent = new CPaneMgr(mpScreen, MULTI_CHAR('r_k_n'), 2, NULL); JUT_ASSERT(0, mpRupeeKeyParent != NULL); field_0x718 = 1.0f; - static u64 const rupeet1_tag[] = {'r_n_1_s', 'r_n_2_s', 'r_n_3_s', 'r_n_4_s'}; - static u64 const rupeet2_tag[] = {'r_n_1', 'r_n_2', 'r_n_3', 'r_n_4'}; + static u64 const rupeet1_tag[] = {MULTI_CHAR('r_n_1_s'), MULTI_CHAR('r_n_2_s'), MULTI_CHAR('r_n_3_s'), MULTI_CHAR('r_n_4_s')}; + static u64 const rupeet2_tag[] = {MULTI_CHAR('r_n_1'), MULTI_CHAR('r_n_2'), MULTI_CHAR('r_n_3'), MULTI_CHAR('r_n_4')}; for (int i = 0; i < 4; i++) { mpRupeeTexture[i][0] = new CPaneMgr(mpScreen, rupeet1_tag[i], 0, NULL); @@ -924,20 +924,20 @@ void dMeter2Draw_c::initRupeeKey() { mpRupeeTexture[i][1]->getPanePtr()->setBasePosition(J2DBasePosition_4); } - mpRupeeParent[0] = new CPaneMgr(mpScreen, 'rupi_n', 2, NULL); + mpRupeeParent[0] = new CPaneMgr(mpScreen, MULTI_CHAR('rupi_n'), 2, NULL); JUT_ASSERT(0, mpRupeeParent[0] != NULL); - mpRupeeParent[1] = new CPaneMgr(mpScreen, 'moyou_rn', 2, NULL); + mpRupeeParent[1] = new CPaneMgr(mpScreen, MULTI_CHAR('moyou_rn'), 2, NULL); JUT_ASSERT(0, mpRupeeParent[1] != NULL); - mpRupeeParent[2] = new CPaneMgr(mpScreen, 'moyou_ln', 2, NULL); + mpRupeeParent[2] = new CPaneMgr(mpScreen, MULTI_CHAR('moyou_ln'), 2, NULL); JUT_ASSERT(0, mpRupeeParent[2] != NULL); mpRupeeParent[0]->setAlphaRate(0.0f); mpRupeeParent[1]->setAlphaRate(0.0f); mpRupeeParent[2]->setAlphaRate(0.0f); - static u64 const key_tag[] = {'key_nul', 'k_n_1_n', 'k_n_2_n', 'k_n_3_n', 'k_n_4_n'}; + static u64 const key_tag[] = {MULTI_CHAR('key_nul'), MULTI_CHAR('k_n_1_n'), MULTI_CHAR('k_n_2_n'), MULTI_CHAR('k_n_3_n'), MULTI_CHAR('k_n_4_n')}; for (int i = 0; i < 5; i++) { mpKeyTexture[i] = new CPaneMgr(mpScreen, key_tag[i], 0, NULL); @@ -946,7 +946,7 @@ void dMeter2Draw_c::initRupeeKey() { mpKeyTexture[i]->hide(); } - mpKeyParent = new CPaneMgr(mpScreen, 'key_n', 2, NULL); + mpKeyParent = new CPaneMgr(mpScreen, MULTI_CHAR('key_n'), 2, NULL); JUT_ASSERT(0, mpKeyParent != NULL); mpKeyParent->setAlphaRate(0.0f); @@ -988,7 +988,7 @@ void dMeter2Draw_c::initButton() { } } - mpItemB = new CPaneMgr(mpScreen, 'b_itm_p', 0, NULL); + mpItemB = new CPaneMgr(mpScreen, MULTI_CHAR('b_itm_p'), 0, NULL); JUT_ASSERT(0, mpItemB != NULL); mpItemB->getPanePtr()->setBasePosition(J2DBasePosition_4); mpItemB->show(); @@ -1003,19 +1003,19 @@ void dMeter2Draw_c::initButton() { field_0x771 = dComIfGs_getBButtonItemKey(); mpItemBPane = new J2DPicture( - 'b_itm_pp', + MULTI_CHAR('b_itm_pp'), JGeometry::TBox2(0.0f, 0.0f, mpItemB->getInitSizeX(), mpItemB->getInitSizeY()), static_cast(mpItemB->getPanePtr())->getTexture(0)->getTexInfo(), NULL); JUT_ASSERT(0, mpItemBPane != NULL); mpItemBPane->setBasePosition(J2DBasePosition_4); mpItemB->getPanePtr()->appendChild(mpItemBPane); - mpItemXY[0] = new CPaneMgr(mpScreen, 'x_itm_p', 0, NULL); + mpItemXY[0] = new CPaneMgr(mpScreen, MULTI_CHAR('x_itm_p'), 0, NULL); JUT_ASSERT(0, mpItemXY[0] != NULL); mpItemXY[0]->getPanePtr()->setBasePosition(J2DBasePosition_4); dMeter2Info_setMeterItemPanePtr(0, mpItemXY[0]); - mpItemXY[1] = new CPaneMgr(mpScreen, 'y_itm_p', 0, NULL); + mpItemXY[1] = new CPaneMgr(mpScreen, MULTI_CHAR('y_itm_p'), 0, NULL); JUT_ASSERT(0, mpItemXY[1] != NULL); mpItemXY[1]->getPanePtr()->setBasePosition(J2DBasePosition_4); dMeter2Info_setMeterItemPanePtr(1, mpItemXY[1]); @@ -1024,7 +1024,7 @@ void dMeter2Draw_c::initButton() { mpBTextA = NULL; mpItemXYPane[0] = new J2DPicture( - 'x_itm_pp', + MULTI_CHAR('x_itm_pp'), JGeometry::TBox2(0.0f, 0.0f, mpItemXY[0]->getInitSizeX(), mpItemXY[0]->getInitSizeY()), static_cast(mpItemXY[0]->getPanePtr())->getTexture(0)->getTexInfo(), NULL); JUT_ASSERT(0, mpItemXYPane[0] != NULL); @@ -1032,84 +1032,84 @@ void dMeter2Draw_c::initButton() { mpItemXY[0]->getPanePtr()->appendChild(mpItemXYPane[0]); mpItemXYPane[1] = new J2DPicture( - 'y_itm_pp', + MULTI_CHAR('y_itm_pp'), JGeometry::TBox2(0.0f, 0.0f, mpItemXY[1]->getInitSizeX(), mpItemXY[1]->getInitSizeY()), static_cast(mpItemXY[1]->getPanePtr())->getTexture(0)->getTexInfo(), NULL); JUT_ASSERT(0, mpItemXYPane[1] != NULL); mpItemXYPane[1]->setBasePosition(J2DBasePosition_4); mpItemXY[1]->getPanePtr()->appendChild(mpItemXYPane[1]); - mpItemR = new CPaneMgr(mpScreen, 'r_itm_p', 0, NULL); + mpItemR = new CPaneMgr(mpScreen, MULTI_CHAR('r_itm_p'), 0, NULL); JUT_ASSERT(0, mpItemR != NULL); mpItemR->getPanePtr()->setBasePosition(J2DBasePosition_4); dMeter2Info_setMeterItemPanePtr(2, mpItemR); mpItemXYPane[2] = new J2DPicture( - 'r_itm_pp', + MULTI_CHAR('r_itm_pp'), JGeometry::TBox2(0.0f, 0.0f, mpItemR->getInitSizeX(), mpItemR->getInitSizeY()), static_cast(mpItemR->getPanePtr())->getTexture(0)->getTexInfo(), NULL); JUT_ASSERT(0, mpItemXYPane[2] != NULL); mpItemXYPane[2]->setBasePosition(J2DBasePosition_4); mpItemR->getPanePtr()->appendChild(mpItemXYPane[2]); - mpLightB = new CPaneMgr(mpScreen, 'b_light', 0, NULL); + mpLightB = new CPaneMgr(mpScreen, MULTI_CHAR('b_light'), 0, NULL); JUT_ASSERT(0, mpLightB != NULL); mpLightB->getPanePtr()->setBasePosition(J2DBasePosition_4); field_0x72c = 1.0f; mpLightB->hide(); - mpLightXY[0] = new CPaneMgr(mpScreen, 'x_light', 0, NULL); + mpLightXY[0] = new CPaneMgr(mpScreen, MULTI_CHAR('x_light'), 0, NULL); JUT_ASSERT(0, mpLightXY[0] != NULL); mpLightXY[0]->getPanePtr()->setBasePosition(J2DBasePosition_4); mpLightXY[0]->hide(); - mpLightXY[1] = new CPaneMgr(mpScreen, 'y_light', 0, NULL); + mpLightXY[1] = new CPaneMgr(mpScreen, MULTI_CHAR('y_light'), 0, NULL); JUT_ASSERT(0, mpLightXY[1] != NULL); mpLightXY[1]->getPanePtr()->setBasePosition(J2DBasePosition_4); mpLightXY[1]->hide(); - mpLightXY[2] = new CPaneMgr(mpScreen, 'r_light', 0, NULL); + mpLightXY[2] = new CPaneMgr(mpScreen, MULTI_CHAR('r_light'), 0, NULL); JUT_ASSERT(0, mpLightXY[2] != NULL); mpLightXY[2]->getPanePtr()->setBasePosition(J2DBasePosition_4); mpLightXY[2]->hide(); - mpBTextA = new CPaneMgr(mpScreen, 'b_text_a', 0, NULL); + mpBTextA = new CPaneMgr(mpScreen, MULTI_CHAR('b_text_a'), 0, NULL); JUT_ASSERT(0, mpBTextA != NULL); - mpBTextB = new CPaneMgr(mpScreen, 'b_text_b', 0, NULL); + mpBTextB = new CPaneMgr(mpScreen, MULTI_CHAR('b_text_b'), 0, NULL); JUT_ASSERT(0, mpBTextB != NULL); - mpBTextXY[0] = new CPaneMgr(mpScreen, 'b_text_x', 0, NULL); + mpBTextXY[0] = new CPaneMgr(mpScreen, MULTI_CHAR('b_text_x'), 0, NULL); JUT_ASSERT(0, mpBTextXY[0] != NULL); - mpBTextXY[1] = new CPaneMgr(mpScreen, 'b_text_y', 0, NULL); + mpBTextXY[1] = new CPaneMgr(mpScreen, MULTI_CHAR('b_text_y'), 0, NULL); JUT_ASSERT(0, mpBTextXY[1] != NULL); mpBTextXY[2] = NULL; - mpTextA = new CPaneMgr(mpScreen, 'a_text_n', 0, NULL); + mpTextA = new CPaneMgr(mpScreen, MULTI_CHAR('a_text_n'), 0, NULL); JUT_ASSERT(0, mpTextA != NULL); - mpTextB = new CPaneMgr(mpScreen, 'b_text_n', 0, NULL); + mpTextB = new CPaneMgr(mpScreen, MULTI_CHAR('b_text_n'), 0, NULL); JUT_ASSERT(0, mpTextB != NULL); - mpTextXY[2] = new CPaneMgr(mpScreen, 'z_text_n', 0, NULL); + mpTextXY[2] = new CPaneMgr(mpScreen, MULTI_CHAR('z_text_n'), 0, NULL); JUT_ASSERT(0, mpTextXY[2] != NULL); - mpTextXY[0] = new CPaneMgr(mpScreen, 'x_text_n', 0, NULL); + mpTextXY[0] = new CPaneMgr(mpScreen, MULTI_CHAR('x_text_n'), 0, NULL); JUT_ASSERT(0, mpTextXY[0] != NULL); - mpTextXY[1] = new CPaneMgr(mpScreen, 'y_text_n', 0, NULL); + mpTextXY[1] = new CPaneMgr(mpScreen, MULTI_CHAR('y_text_n'), 0, NULL); JUT_ASSERT(0, mpTextXY[1] != NULL); - mpTextI = new CPaneMgr(mpScreen, 'i_text_n', 2, NULL); + mpTextI = new CPaneMgr(mpScreen, MULTI_CHAR('i_text_n'), 2, NULL); JUT_ASSERT(0, mpTextI != NULL); - mpTextM = new CPaneMgr(mpScreen, 'm_text_n', 2, NULL); + mpTextM = new CPaneMgr(mpScreen, MULTI_CHAR('m_text_n'), 2, NULL); JUT_ASSERT(0, mpTextM != NULL); - static u64 const juji_i_tag[] = {'ju_ring4', 'yaji_00', 'yaji_01', 'ju_ring2', 'ju_ring4'}; - static u64 const juji_m_tag[] = {'ju_ring3', 'yaji_02', 'yaji_03', 'ju_ring3', 0}; + static u64 const juji_i_tag[] = {MULTI_CHAR('ju_ring4'), MULTI_CHAR('yaji_00'), MULTI_CHAR('yaji_01'), MULTI_CHAR('ju_ring2'), MULTI_CHAR('ju_ring4')}; + static u64 const juji_m_tag[] = {MULTI_CHAR('ju_ring3'), MULTI_CHAR('yaji_02'), MULTI_CHAR('yaji_03'), MULTI_CHAR('ju_ring3'), 0}; for (int i = 0; i < 5; i++) { if (juji_i_tag[i] != 0) { @@ -1130,33 +1130,33 @@ void dMeter2Draw_c::initButton() { mpTextXY[0]->hide(); mpTextXY[1]->hide(); - mpButtonParent = new CPaneMgr(mpScreen, 'cont_n', 2, NULL); + mpButtonParent = new CPaneMgr(mpScreen, MULTI_CHAR('cont_n'), 2, NULL); JUT_ASSERT(0, mpButtonParent != NULL); - mpButtonA = new CPaneMgr(mpScreen, 'abtn_n', 2, NULL); + mpButtonA = new CPaneMgr(mpScreen, MULTI_CHAR('abtn_n'), 2, NULL); JUT_ASSERT(0, mpButtonA != NULL); - mpButtonB = new CPaneMgr(mpScreen, 'bbtn_n', 2, NULL); + mpButtonB = new CPaneMgr(mpScreen, MULTI_CHAR('bbtn_n'), 2, NULL); JUT_ASSERT(0, mpButtonB != NULL); field_0x730 = 1.0f; - mpButtonMidona = new CPaneMgr(mpScreen, 'midona_n', 2, NULL); + mpButtonMidona = new CPaneMgr(mpScreen, MULTI_CHAR('midona_n'), 2, NULL); JUT_ASSERT(0, mpButtonMidona != NULL); mButtonZAlpha = 0.0f; field_0x724 = 0.0f; field_0x738 = 0.0f; field_0x740 = 0; - mpButtonXY[0] = new CPaneMgr(mpScreen, 'xbtn_n', 2, NULL); + mpButtonXY[0] = new CPaneMgr(mpScreen, MULTI_CHAR('xbtn_n'), 2, NULL); JUT_ASSERT(0, mpButtonXY[0] != NULL); - mpButtonXY[1] = new CPaneMgr(mpScreen, 'ybtn_n', 2, NULL); + mpButtonXY[1] = new CPaneMgr(mpScreen, MULTI_CHAR('ybtn_n'), 2, NULL); JUT_ASSERT(0, mpButtonXY[1] != NULL); - mpButtonXY[2] = new CPaneMgr(mpScreen, 'zbtn_n', 2, NULL); + mpButtonXY[2] = new CPaneMgr(mpScreen, MULTI_CHAR('zbtn_n'), 2, NULL); JUT_ASSERT(0, mpButtonXY[2] != NULL); - mpUzu = new CPaneMgrAlpha(mpScreen, 'uzu_n', 2, NULL); + mpUzu = new CPaneMgrAlpha(mpScreen, MULTI_CHAR('uzu_n'), 2, NULL); JUT_ASSERT(0, mpUzu != NULL); ResTIMG* timg = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource( @@ -1208,54 +1208,54 @@ void dMeter2Draw_c::initButton() { } void dMeter2Draw_c::initButtonCross() { - mpButtonCrossParent = new CPaneMgr(mpScreen, 'juji_n', 2, NULL); + mpButtonCrossParent = new CPaneMgr(mpScreen, MULTI_CHAR('juji_n'), 2, NULL); JUT_ASSERT(0, mpButtonCrossParent != NULL); - static_cast(mpScreen->search('cont_ju0'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('cont_ju1'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('cont_ju2'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('cont_ju3'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('cont_ju4'))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju0')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju1')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju2')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju3')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju4')))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('cont_ju0'))->setString(0x40, ""); - static_cast(mpScreen->search('cont_ju1'))->setString(0x40, ""); - static_cast(mpScreen->search('cont_ju2'))->setString(0x40, ""); - static_cast(mpScreen->search('cont_ju3'))->setString(0x40, ""); - static_cast(mpScreen->search('cont_ju4'))->setString(0x40, ""); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju0')))->setString(0x40, ""); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju1')))->setString(0x40, ""); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju2')))->setString(0x40, ""); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju3')))->setString(0x40, ""); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju4')))->setString(0x40, ""); dMeter2Info_getString( - 0x61, static_cast(mpScreen->search('cont_ju0'))->getStringPtr(), NULL); + 0x61, static_cast(mpScreen->search(MULTI_CHAR('cont_ju0')))->getStringPtr(), NULL); dMeter2Info_getString( - 0x61, static_cast(mpScreen->search('cont_ju1'))->getStringPtr(), NULL); + 0x61, static_cast(mpScreen->search(MULTI_CHAR('cont_ju1')))->getStringPtr(), NULL); dMeter2Info_getString( - 0x61, static_cast(mpScreen->search('cont_ju2'))->getStringPtr(), NULL); + 0x61, static_cast(mpScreen->search(MULTI_CHAR('cont_ju2')))->getStringPtr(), NULL); dMeter2Info_getString( - 0x61, static_cast(mpScreen->search('cont_ju3'))->getStringPtr(), NULL); + 0x61, static_cast(mpScreen->search(MULTI_CHAR('cont_ju3')))->getStringPtr(), NULL); dMeter2Info_getString( - 0x61, static_cast(mpScreen->search('cont_ju4'))->getStringPtr(), NULL); + 0x61, static_cast(mpScreen->search(MULTI_CHAR('cont_ju4')))->getStringPtr(), NULL); - static_cast(mpScreen->search('cont_ju5'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('cont_ju6'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('cont_ju7'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('cont_ju8'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('cont_ju9'))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju5')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju6')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju7')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju8')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju9')))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('cont_ju5'))->setString(0x40, ""); - static_cast(mpScreen->search('cont_ju6'))->setString(0x40, ""); - static_cast(mpScreen->search('cont_ju7'))->setString(0x40, ""); - static_cast(mpScreen->search('cont_ju8'))->setString(0x40, ""); - static_cast(mpScreen->search('cont_ju9'))->setString(0x40, ""); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju5')))->setString(0x40, ""); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju6')))->setString(0x40, ""); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju7')))->setString(0x40, ""); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju8')))->setString(0x40, ""); + static_cast(mpScreen->search(MULTI_CHAR('cont_ju9')))->setString(0x40, ""); dMeter2Info_getString( - 0x62, static_cast(mpScreen->search('cont_ju5'))->getStringPtr(), NULL); + 0x62, static_cast(mpScreen->search(MULTI_CHAR('cont_ju5')))->getStringPtr(), NULL); dMeter2Info_getString( - 0x62, static_cast(mpScreen->search('cont_ju6'))->getStringPtr(), NULL); + 0x62, static_cast(mpScreen->search(MULTI_CHAR('cont_ju6')))->getStringPtr(), NULL); dMeter2Info_getString( - 0x62, static_cast(mpScreen->search('cont_ju7'))->getStringPtr(), NULL); + 0x62, static_cast(mpScreen->search(MULTI_CHAR('cont_ju7')))->getStringPtr(), NULL); dMeter2Info_getString( - 0x62, static_cast(mpScreen->search('cont_ju8'))->getStringPtr(), NULL); + 0x62, static_cast(mpScreen->search(MULTI_CHAR('cont_ju8')))->getStringPtr(), NULL); dMeter2Info_getString( - 0x62, static_cast(mpScreen->search('cont_ju9'))->getStringPtr(), NULL); + 0x62, static_cast(mpScreen->search(MULTI_CHAR('cont_ju9')))->getStringPtr(), NULL); mpButtonCrossParent->setAlphaRate(0.0f); drawButtonCross(g_drawHIO.mButtonCrossOFFPosX, g_drawHIO.mButtonCrossOFFPosY); @@ -1269,9 +1269,9 @@ void dMeter2Draw_c::playPikariBckAnimation(f32 i_frame) { } void dMeter2Draw_c::setPikariBpkAnimation(J2DAnmColor* i_bpk) { - mpPikariScreen->search('pika00')->setAnimation(i_bpk); - mpPikariScreen->search('moya00')->setAnimation(i_bpk); - mpPikariScreen->search('moyabs')->setAnimation(i_bpk); + mpPikariScreen->search(MULTI_CHAR('pika00'))->setAnimation(i_bpk); + mpPikariScreen->search(MULTI_CHAR('moya00'))->setAnimation(i_bpk); + mpPikariScreen->search(MULTI_CHAR('moyabs'))->setAnimation(i_bpk); } void dMeter2Draw_c::playPikariBpkAnimation(f32 i_frame) { @@ -1283,18 +1283,18 @@ void dMeter2Draw_c::playPikariBpkAnimation(f32 i_frame) { void dMeter2Draw_c::playOxygenBpkAnimation(J2DAnmColor* i_bpk) { if (i_bpk == NULL || mpMagicMeter->getAlpha() == 0) { - mpKanteraScreen->search('mm_00')->setAnimation((J2DAnmColor*)NULL); + mpKanteraScreen->search(MULTI_CHAR('mm_00'))->setAnimation((J2DAnmColor*)NULL); } else { field_0x558++; if (field_0x558 >= i_bpk->getFrameMax()) { field_0x558 -= i_bpk->getFrameMax(); } - mpKanteraScreen->search('mm_00')->setAnimation(i_bpk); + mpKanteraScreen->search(MULTI_CHAR('mm_00'))->setAnimation(i_bpk); i_bpk->setFrame(field_0x558); mpKanteraScreen->animation(); - mpKanteraScreen->search('mm_00')->setAnimation((J2DAnmColor*)NULL); + mpKanteraScreen->search(MULTI_CHAR('mm_00'))->setAnimation((J2DAnmColor*)NULL); } } @@ -1315,20 +1315,20 @@ void dMeter2Draw_c::drawPikari(f32 i_posX, f32 i_posY, f32* i_framep, f32 i_scal if (param_9 == 4) { var_f31 = 24.0f; - if (mpPikariScreen->search('moya00')->isVisible()) { - mpPikariScreen->search('moya00')->hide(); + if (mpPikariScreen->search(MULTI_CHAR('moya00'))->isVisible()) { + mpPikariScreen->search(MULTI_CHAR('moya00'))->hide(); } - if (mpPikariScreen->search('moyabs')->isVisible()) { - mpPikariScreen->search('moyabs')->hide(); + if (mpPikariScreen->search(MULTI_CHAR('moyabs'))->isVisible()) { + mpPikariScreen->search(MULTI_CHAR('moyabs'))->hide(); } } else { - if (!mpPikariScreen->search('moya00')->isVisible()) { - mpPikariScreen->search('moya00')->show(); + if (!mpPikariScreen->search(MULTI_CHAR('moya00'))->isVisible()) { + mpPikariScreen->search(MULTI_CHAR('moya00'))->show(); } - if (!mpPikariScreen->search('moyabs')->isVisible()) { - mpPikariScreen->search('moyabs')->show(); + if (!mpPikariScreen->search(MULTI_CHAR('moyabs'))->isVisible()) { + mpPikariScreen->search(MULTI_CHAR('moyabs'))->show(); } } @@ -1357,21 +1357,21 @@ void dMeter2Draw_c::drawPikari(f32 i_posX, f32 i_posY, f32* i_framep, f32 i_scal mpPikariParent->scale(i_scale * mpPikariParent->getScaleX(), i_scale * mpPikariParent->getScaleY()); - if (mpPikariScreen->search('moya00')->isVisible()) { - static_cast(mpPikariScreen->search('moya00')) + if (mpPikariScreen->search(MULTI_CHAR('moya00'))->isVisible()) { + static_cast(mpPikariScreen->search(MULTI_CHAR('moya00'))) ->setBlackWhite(i_moyaBlack, i_moyaWhite); } - if (mpPikariScreen->search('moyabs')->isVisible()) { - static_cast(mpPikariScreen->search('moyabs')) + if (mpPikariScreen->search(MULTI_CHAR('moyabs'))->isVisible()) { + static_cast(mpPikariScreen->search(MULTI_CHAR('moyabs'))) ->setBlackWhite(i_moyabsBlack, i_moyabsWhite); } if (param_9 != 4) { - static_cast(mpPikariScreen->search('pika00')) + static_cast(mpPikariScreen->search(MULTI_CHAR('pika00'))) ->setBlackWhite(mPikariBlack, mPikariBlack); } else { - static_cast(mpPikariScreen->search('pika00')) + static_cast(mpPikariScreen->search(MULTI_CHAR('pika00'))) ->setBlackWhite(g_MsgObject_HIO_c.mPikariPikaR1, g_MsgObject_HIO_c.mPikariPikaR0); } @@ -1390,9 +1390,9 @@ void dMeter2Draw_c::drawPikariHakusha(f32 i_posX, f32 i_posY, f32 i_frame, f32 i mpPikariParent->scale(i_scale * mpPikariParent->getScaleX(), i_scale * mpPikariParent->getScaleY()); - static_cast(mpPikariScreen->search('moya00')) + static_cast(mpPikariScreen->search(MULTI_CHAR('moya00'))) ->setBlackWhite(i_moyaBlack, i_moyaWhite); - static_cast(mpPikariScreen->search('moyabs')) + static_cast(mpPikariScreen->search(MULTI_CHAR('moyabs'))) ->setBlackWhite(i_moyabsBlack, i_moyabsWhite); mpPikariScreen->draw(0.0f, 0.0f, dComIfGp_getCurrentGrafPort()); @@ -1407,7 +1407,7 @@ void dMeter2Draw_c::changeTextureLife(int i_no, bool param_1, u8 i_quarterNum) { mpLifeTexture[i_no][0]->hide(); mpLifeTexture[i_no][1]->hide(); - static u64 const tag_bigh[] = {'bigh_00', 'bigh_01', 'bigh_02', 'bigh_03'}; + static u64 const tag_bigh[] = {MULTI_CHAR('bigh_00'), MULTI_CHAR('bigh_01'), MULTI_CHAR('bigh_02'), MULTI_CHAR('bigh_03')}; for (int i = 0; i < 4; i++) { if (i == i_quarterNum) { @@ -1417,7 +1417,7 @@ void dMeter2Draw_c::changeTextureLife(int i_no, bool param_1, u8 i_quarterNum) { } } - static u64 const tag_du[] = {'heart_ln', 'heart_un'}; + static u64 const tag_du[] = {MULTI_CHAR('heart_ln'), MULTI_CHAR('heart_un')}; mpBigHeart->translate(mpLifeParts[i_no]->getTranslateX() + (mpScreen->search(tag_du[i_no / 10])->getTranslateX() - @@ -2295,7 +2295,7 @@ void dMeter2Draw_c::drawButtonB(u8 i_action, bool param_1, f32 i_posX, f32 i_pos } if (i_action == 0x26 || i_action == 0x2E) { - mpScreen->search('item_b_n')->show(); + mpScreen->search(MULTI_CHAR('item_b_n'))->show(); var_r31 = 1; if (mButtonBItem != dComIfGs_getSelectEquipSword()) { @@ -2309,17 +2309,17 @@ void dMeter2Draw_c::drawButtonB(u8 i_action, bool param_1, f32 i_posX, f32 i_pos changeTextureItemB(mButtonBItem); break; default: - mpScreen->search('item_b_n')->hide(); + mpScreen->search(MULTI_CHAR('item_b_n'))->hide(); var_r31 = 0; } } } else if (param_1 == true && i_action == 0x4F) { - mpScreen->search('item_b_n')->show(); + mpScreen->search(MULTI_CHAR('item_b_n'))->show(); mButtonBItem = fpcNm_ITEM_LURE_ROD; changeTextureItemB(fpcNm_ITEM_LURE_ROD); var_r31 = 2; } else { - mpScreen->search('item_b_n')->hide(); + mpScreen->search(MULTI_CHAR('item_b_n'))->hide(); } mpItemB->getPanePtr()->rotate(mpItemB->getSizeX() * 0.5f, mpItemB->getSizeY() * 0.5f, ROTATE_Z, @@ -2344,7 +2344,7 @@ void dMeter2Draw_c::drawButtonB(u8 i_action, bool param_1, f32 i_posX, f32 i_pos } void dMeter2Draw_c::drawButtonR(u8 unused0, u8 i_action, bool unused1, bool unused2) { - mpScreen->search('item_r_n')->hide(); + mpScreen->search(MULTI_CHAR('item_r_n'))->hide(); mpTextXY[2]->show(); getActionString(i_action, 1, &field_0x768[2]); @@ -2431,7 +2431,7 @@ void dMeter2Draw_c::drawButtonBin(u8 i_action) { void dMeter2Draw_c::drawButtonXY(int i_no, u8 i_itemNo, u8 i_action, bool param_3, bool param_4) { JUT_ASSERT(0, i_no < SELECT_MAX_e); - static u64 const tag[] = {'item_x_n', 'item_y_n'}; + static u64 const tag[] = {MULTI_CHAR('item_x_n'), MULTI_CHAR('item_y_n')}; if (!param_3) { mpScreen->search(tag[i_no])->hide(); @@ -3926,7 +3926,7 @@ s16 dMeter2Draw_c::getButtonTimer() { // unused static u64 const tag_7759[] = { - 'item_x_n', - 'item_y_n', - 'item_j_n', + MULTI_CHAR('item_x_n'), + MULTI_CHAR('item_y_n'), + MULTI_CHAR('item_j_n'), }; diff --git a/src/d/d_meter_button.cpp b/src/d/d_meter_button.cpp index 7147e97bc3..a9bcd0f95d 100644 --- a/src/d/d_meter_button.cpp +++ b/src/d/d_meter_button.cpp @@ -141,42 +141,42 @@ int dMeterButton_c::_execute(u32 i_flags, bool i_drawA, bool i_drawB, bool i_dra u8 dir_3D = dComIfGp_get3DDirection(); if (dir_3D & DIR_LEFT_e) { - if (!mpButtonScreen->search('yaji_l_n')->isVisible()) { - mpButtonScreen->search('yaji_l_n')->show(); + if (!mpButtonScreen->search(MULTI_CHAR('yaji_l_n'))->isVisible()) { + mpButtonScreen->search(MULTI_CHAR('yaji_l_n'))->show(); } } else { - if (mpButtonScreen->search('yaji_l_n')->isVisible() == true) { - mpButtonScreen->search('yaji_l_n')->hide(); + if (mpButtonScreen->search(MULTI_CHAR('yaji_l_n'))->isVisible() == true) { + mpButtonScreen->search(MULTI_CHAR('yaji_l_n'))->hide(); } } if (dir_3D & DIR_UP_e) { - if (!mpButtonScreen->search('yaji_u_n')->isVisible()) { - mpButtonScreen->search('yaji_u_n')->show(); + if (!mpButtonScreen->search(MULTI_CHAR('yaji_u_n'))->isVisible()) { + mpButtonScreen->search(MULTI_CHAR('yaji_u_n'))->show(); } } else { - if (mpButtonScreen->search('yaji_u_n')->isVisible() == true) { - mpButtonScreen->search('yaji_u_n')->hide(); + if (mpButtonScreen->search(MULTI_CHAR('yaji_u_n'))->isVisible() == true) { + mpButtonScreen->search(MULTI_CHAR('yaji_u_n'))->hide(); } } if (dir_3D & DIR_DOWN_e) { - if (!mpButtonScreen->search('yaji_d_n')->isVisible()) { - mpButtonScreen->search('yaji_d_n')->show(); + if (!mpButtonScreen->search(MULTI_CHAR('yaji_d_n'))->isVisible()) { + mpButtonScreen->search(MULTI_CHAR('yaji_d_n'))->show(); } } else { - if (mpButtonScreen->search('yaji_d_n')->isVisible() == true) { - mpButtonScreen->search('yaji_d_n')->hide(); + if (mpButtonScreen->search(MULTI_CHAR('yaji_d_n'))->isVisible() == true) { + mpButtonScreen->search(MULTI_CHAR('yaji_d_n'))->hide(); } } if (dir_3D & DIR_RIGHT_e) { - if (!mpButtonScreen->search('yaji_r_n')->isVisible()) { - mpButtonScreen->search('yaji_r_n')->show(); + if (!mpButtonScreen->search(MULTI_CHAR('yaji_r_n'))->isVisible()) { + mpButtonScreen->search(MULTI_CHAR('yaji_r_n'))->show(); } } else { - if (mpButtonScreen->search('yaji_r_n')->isVisible() == true) { - mpButtonScreen->search('yaji_r_n')->hide(); + if (mpButtonScreen->search(MULTI_CHAR('yaji_r_n'))->isVisible() == true) { + mpButtonScreen->search(MULTI_CHAR('yaji_r_n'))->hide(); } } } @@ -185,39 +185,39 @@ int dMeterButton_c::_execute(u32 i_flags, bool i_drawA, bool i_drawB, bool i_dra u8 dir_c = dComIfGp_getCStickDirection(); if (dir_c & DIR_LEFT_e) { - if (!mpButtonScreen->search('yaji_ln')->isVisible()) { - mpButtonScreen->search('yaji_ln')->show(); + if (!mpButtonScreen->search(MULTI_CHAR('yaji_ln'))->isVisible()) { + mpButtonScreen->search(MULTI_CHAR('yaji_ln'))->show(); } } else { - if (mpButtonScreen->search('yaji_ln')->isVisible() == true) { - mpButtonScreen->search('yaji_ln')->hide(); + if (mpButtonScreen->search(MULTI_CHAR('yaji_ln'))->isVisible() == true) { + mpButtonScreen->search(MULTI_CHAR('yaji_ln'))->hide(); } } if (dir_c & DIR_UP_e) { - if (!mpButtonScreen->search('yaji_un')->isVisible()) { - mpButtonScreen->search('yaji_un')->show(); + if (!mpButtonScreen->search(MULTI_CHAR('yaji_un'))->isVisible()) { + mpButtonScreen->search(MULTI_CHAR('yaji_un'))->show(); } } else { - if (mpButtonScreen->search('yaji_un')->isVisible() == true) { - mpButtonScreen->search('yaji_un')->hide(); + if (mpButtonScreen->search(MULTI_CHAR('yaji_un'))->isVisible() == true) { + mpButtonScreen->search(MULTI_CHAR('yaji_un'))->hide(); } } if (dir_c & DIR_DOWN_e) { - if (!mpButtonScreen->search('yaji_dn')->isVisible()) { - mpButtonScreen->search('yaji_dn')->show(); + if (!mpButtonScreen->search(MULTI_CHAR('yaji_dn'))->isVisible()) { + mpButtonScreen->search(MULTI_CHAR('yaji_dn'))->show(); } - } else if (mpButtonScreen->search('yaji_dn')->isVisible() == true) { - mpButtonScreen->search('yaji_dn')->hide(); + } else if (mpButtonScreen->search(MULTI_CHAR('yaji_dn'))->isVisible() == true) { + mpButtonScreen->search(MULTI_CHAR('yaji_dn'))->hide(); } if (dir_c & DIR_RIGHT_e) { - if (!mpButtonScreen->search('yaji_rn')->isVisible()) { - mpButtonScreen->search('yaji_rn')->show(); + if (!mpButtonScreen->search(MULTI_CHAR('yaji_rn'))->isVisible()) { + mpButtonScreen->search(MULTI_CHAR('yaji_rn'))->show(); } - } else if (mpButtonScreen->search('yaji_rn')->isVisible() == true) { - mpButtonScreen->search('yaji_rn')->hide(); + } else if (mpButtonScreen->search(MULTI_CHAR('yaji_rn'))->isVisible() == true) { + mpButtonScreen->search(MULTI_CHAR('yaji_rn'))->hide(); } } @@ -986,13 +986,13 @@ bool dMeterButton_c::alphaAnimeButtonBin(u32 i_flags, bool i_drawButton) { void dMeterButton_c::screenInitButton() { static u64 const text_tag[] = { - 'info_ar0', 'info_ar1', 'info_ar2', 'info_ar3', 'info_ar4', - 'info_ar5', 'info_ar6', 'info_ar7', 'info_ar8', 'info_ar9', + MULTI_CHAR('info_ar0'), MULTI_CHAR('info_ar1'), MULTI_CHAR('info_ar2'), MULTI_CHAR('info_ar3'), MULTI_CHAR('info_ar4'), + MULTI_CHAR('info_ar5'), MULTI_CHAR('info_ar6'), MULTI_CHAR('info_ar7'), MULTI_CHAR('info_ar8'), MULTI_CHAR('info_ar9'), }; static u64 const ftext_tag[] = { - 'fnfo_ar0', 'fnfo_ar1', 'fnfo_ar2', 'fnfo_ar3', 'fnfo_ar4', - 'fnfo_ar5', 'fnfo_ar6', 'fnfo_ar7', 'fnfo_ar8', 'fnfo_ar9', + MULTI_CHAR('fnfo_ar0'), MULTI_CHAR('fnfo_ar1'), MULTI_CHAR('fnfo_ar2'), MULTI_CHAR('fnfo_ar3'), MULTI_CHAR('fnfo_ar4'), + MULTI_CHAR('fnfo_ar5'), MULTI_CHAR('fnfo_ar6'), MULTI_CHAR('fnfo_ar7'), MULTI_CHAR('fnfo_ar8'), MULTI_CHAR('fnfo_ar9'), }; OS_REPORT("enter dMeterButton_c::screenInitButton\n"); @@ -1012,7 +1012,7 @@ void dMeterButton_c::screenInitButton() { dPaneClass_showNullPane(mpButtonScreen); field_0x00c = NULL; - mpParent = new CPaneMgr(mpButtonScreen, 'info_n', 0, NULL); + mpParent = new CPaneMgr(mpButtonScreen, MULTI_CHAR('info_n'), 0, NULL); if (mpParent == NULL) OS_REPORT("[%s] %d\n", __FILE__, 1867); JUT_ASSERT(1868, mpParent != NULL); @@ -1037,7 +1037,7 @@ void dMeterButton_c::screenInitButton() { mParentCenterX = (608.0f / 2) - mpParent->getInitCenterPosX(); paneTrans(mpParent, mParentCenterX, 0.0f, 0xFF); - mpButtonA = new CPaneMgr(mpButtonScreen, 'abtn_n', 2, NULL); + mpButtonA = new CPaneMgr(mpButtonScreen, MULTI_CHAR('abtn_n'), 2, NULL); if (mpButtonA == NULL) { OS_REPORT("[%s] %d\n", __FILE__, 1902); } @@ -1045,7 +1045,7 @@ void dMeterButton_c::screenInitButton() { mpButtonA->setAlphaRate(0.0f); mpButtonA->show(); - mpButtonB = new CPaneMgr(mpButtonScreen, 'bbtn_n', 2, NULL); + mpButtonB = new CPaneMgr(mpButtonScreen, MULTI_CHAR('bbtn_n'), 2, NULL); if (mpButtonB == NULL) { OS_REPORT("[%s] %d\n", __FILE__, 1914); } @@ -1053,7 +1053,7 @@ void dMeterButton_c::screenInitButton() { mpButtonB->setAlphaRate(0.0f); mpButtonB->show(); - mpButtonR = new CPaneMgr(mpButtonScreen, 'rbtn_n', 2, NULL); + mpButtonR = new CPaneMgr(mpButtonScreen, MULTI_CHAR('rbtn_n'), 2, NULL); if (mpButtonR == NULL) { OS_REPORT("[%s] %d\n", __FILE__, 1932); } @@ -1061,7 +1061,7 @@ void dMeterButton_c::screenInitButton() { mpButtonR->setAlphaRate(0.0f); mpButtonR->show(); - mpMidona = new CPaneMgr(mpButtonScreen, 'midona', 0, NULL); + mpMidona = new CPaneMgr(mpButtonScreen, MULTI_CHAR('midona'), 0, NULL); JUT_ASSERT(1939, mpMidona != NULL); if (mpMidona == NULL) { OS_REPORT("[%s] %d\n", __FILE__, 1941); @@ -1073,12 +1073,12 @@ void dMeterButton_c::screenInitButton() { #if DEBUG if (mpButtonScreen->search('zbtn') == 0) OS_REPORT("[%s] %d\n", __FILE__, 1947); - if (mpButtonScreen->search('z_btnl') == 0) OS_REPORT("[%s] %d\n", __FILE__, 1948); + if (mpButtonScreen->search(MULTI_CHAR('z_btnl')) == 0) OS_REPORT("[%s] %d\n", __FILE__, 1948); #endif mpButtonScreen->search('zbtn')->show(); - mpButtonScreen->search('z_btnl')->show(); + mpButtonScreen->search(MULTI_CHAR('z_btnl'))->show(); - mpButtonZ = new CPaneMgr(mpButtonScreen, 'zbtn_n', 2, NULL); + mpButtonZ = new CPaneMgr(mpButtonScreen, MULTI_CHAR('zbtn_n'), 2, NULL); if (mpButtonZ == NULL) { OS_REPORT("[%s] %d\n", __FILE__, 1954); } @@ -1086,35 +1086,35 @@ void dMeterButton_c::screenInitButton() { mpButtonZ->setAlphaRate(0.0f); mpButtonZ->show(); - mpButton3D = new CPaneMgr(mpButtonScreen, 'asbtn_n', 2, NULL); + mpButton3D = new CPaneMgr(mpButtonScreen, MULTI_CHAR('asbtn_n'), 2, NULL); JUT_ASSERT(1964, mpButton3D != NULL); mpButton3D->setAlphaRate(0.0f); mpButton3D->show(); - mpButtonScreen->search('yaji_l_n')->hide(); - mpButtonScreen->search('yaji_u_n')->hide(); - mpButtonScreen->search('yaji_d_n')->hide(); - mpButtonScreen->search('yaji_r_n')->hide(); + mpButtonScreen->search(MULTI_CHAR('yaji_l_n'))->hide(); + mpButtonScreen->search(MULTI_CHAR('yaji_u_n'))->hide(); + mpButtonScreen->search(MULTI_CHAR('yaji_d_n'))->hide(); + mpButtonScreen->search(MULTI_CHAR('yaji_r_n'))->hide(); - mpButtonC = new CPaneMgr(mpButtonScreen, 'cbtn_n', 2, NULL); + mpButtonC = new CPaneMgr(mpButtonScreen, MULTI_CHAR('cbtn_n'), 2, NULL); JUT_ASSERT(1992, mpButtonC != NULL); mpButtonC->setAlphaRate(0.0f); mpButtonC->show(); - mpButtonScreen->search('yaji_ln')->hide(); - mpButtonScreen->search('yaji_un')->hide(); - mpButtonScreen->search('yaji_dn')->hide(); - mpButtonScreen->search('yaji_rn')->hide(); + mpButtonScreen->search(MULTI_CHAR('yaji_ln'))->hide(); + mpButtonScreen->search(MULTI_CHAR('yaji_un'))->hide(); + mpButtonScreen->search(MULTI_CHAR('yaji_dn'))->hide(); + mpButtonScreen->search(MULTI_CHAR('yaji_rn'))->hide(); - mpButtonS = new CPaneMgr(mpButtonScreen, 'sbtn_n', 2, NULL); + mpButtonS = new CPaneMgr(mpButtonScreen, MULTI_CHAR('sbtn_n'), 2, NULL); JUT_ASSERT(2002, mpButtonS != NULL); mpButtonS->setAlphaRate(0.0f); - mpButtonX = new CPaneMgr(mpButtonScreen, 'xbtn_n', 2, NULL); + mpButtonX = new CPaneMgr(mpButtonScreen, MULTI_CHAR('xbtn_n'), 2, NULL); JUT_ASSERT(2048, mpButtonX != NULL); mpButtonX->setAlphaRate(0.0f); - mpButtonY = new CPaneMgr(mpButtonScreen, 'ybtn_n', 2, NULL); + mpButtonY = new CPaneMgr(mpButtonScreen, MULTI_CHAR('ybtn_n'), 2, NULL); JUT_ASSERT(2052, mpButtonY != NULL); mpButtonY->setAlphaRate(0.0f); @@ -1123,7 +1123,7 @@ void dMeterButton_c::screenInitButton() { mpButtonRemo2 = NULL; mpButtonAR = NULL; - mpButton3DB = new CPaneMgr(mpButtonScreen, 'as_b_n', 2, NULL); + mpButton3DB = new CPaneMgr(mpButtonScreen, MULTI_CHAR('as_b_n'), 2, NULL); JUT_ASSERT(2060, mpButton3DB != NULL); mpButton3DB->setAlphaRate(0.0f); @@ -1135,19 +1135,19 @@ void dMeterButton_c::screenInitButton() { mpButtonNunZ = NULL; mpButtonNunC = NULL; - mpButtonBin = new CPaneMgr(mpButtonScreen, 'bottl_n', 2, NULL); + mpButtonBin = new CPaneMgr(mpButtonScreen, MULTI_CHAR('bottl_n'), 2, NULL); JUT_ASSERT(2071, mpButtonBin != NULL); mpButtonBin->setAlphaRate(0.0f); - mpText[0] = new CPaneMgr(mpButtonScreen, 'text_n', 2, NULL); + mpText[0] = new CPaneMgr(mpButtonScreen, MULTI_CHAR('text_n'), 2, NULL); JUT_ASSERT(2075, mpText[0] != NULL); mpText[0]->setAlphaRate(0.0f); - mpText[1] = new CPaneMgr(mpButtonScreen, 'text2_n', 2, NULL); + mpText[1] = new CPaneMgr(mpButtonScreen, MULTI_CHAR('text2_n'), 2, NULL); JUT_ASSERT(2079, mpText[1] != NULL); mpText[1]->setAlphaRate(0.0f); - mpItem_c = new CPaneMgr(mpButtonScreen, 'fishing', 0, NULL); + mpItem_c = new CPaneMgr(mpButtonScreen, MULTI_CHAR('fishing'), 0, NULL); JUT_ASSERT(2083, mpItem_c != NULL); mpItem_c->setAlphaRate(0.0f); @@ -1214,8 +1214,8 @@ void dMeterButton_c::screenInitButton() { Mtx m, m2; Vec sp108 = pane.getGlobalVtx(mpButtonScreen->search('zbtn'), &m, 0, false, 0); Vec spFC = pane.getGlobalVtx(mpButtonScreen->search('zbtn'), &m, 3, false, 0); - Vec spF0 = pane.getGlobalVtx(mpButtonScreen->search('midona'), &m2, 0, false, 0); - Vec spE4 = pane.getGlobalVtx(mpButtonScreen->search('midona'), &m2, 3, false, 0); + Vec spF0 = pane.getGlobalVtx(mpButtonScreen->search(MULTI_CHAR('midona')), &m2, 0, false, 0); + Vec spE4 = pane.getGlobalVtx(mpButtonScreen->search(MULTI_CHAR('midona')), &m2, 3, false, 0); f32 var_f2; if (sp108.x > spF0.x) { @@ -1411,18 +1411,18 @@ void dMeterButton_c::screenInitText() { JUT_ASSERT(2457, fg != false); dPaneClass_showNullPane(mpScreen); - mpFkAll_c = new CPaneMgr(mpScreen, 'n_all', 2, NULL); + mpFkAll_c = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 2, NULL); OS_REPORT("[%s] %d\n", __FILE__, 2461); JUT_ASSERT(2462, mpFkAll_c != NULL); mpFkAll_c->setAlphaRate(0.0f); OS_REPORT("[%s] %d\n", __FILE__, 2465); - mpScreen->search('mg_null')->move( - g_MsgObject_HIO_c.mTextPosX + mpScreen->search('mg_null')->getBounds().i.x, - g_MsgObject_HIO_c.mTextPosY + mpScreen->search('mg_null')->getBounds().i.y); + mpScreen->search(MULTI_CHAR('mg_null'))->move( + g_MsgObject_HIO_c.mTextPosX + mpScreen->search(MULTI_CHAR('mg_null'))->getBounds().i.x, + g_MsgObject_HIO_c.mTextPosY + mpScreen->search(MULTI_CHAR('mg_null'))->getBounds().i.y); OS_REPORT("[%s] %d\n", __FILE__, 2469); - mpFkRoot_c = new CPaneMgr(mpScreen, 'mg_null', 0, NULL); + mpFkRoot_c = new CPaneMgr(mpScreen, MULTI_CHAR('mg_null'), 0, NULL); JUT_ASSERT(2472, mpFkRoot_c != NULL); OS_REPORT("[%s] %d\n", __FILE__, 2474); @@ -1440,24 +1440,24 @@ void dMeterButton_c::screenInitText() { dPaneClass_showNullPane(mpTextScreen); OS_REPORT("[%s] %d\n", __FILE__, 2496); - mpTmRoot_c = new CPaneMgr(mpTextScreen, 'mg_null', 0, NULL); + mpTmRoot_c = new CPaneMgr(mpTextScreen, MULTI_CHAR('mg_null'), 0, NULL); JUT_ASSERT(2499, mpTmRoot_c != NULL); #if VERSION == VERSION_GCN_JPN if (dComIfGs_getOptRuby() == 0) { - mpTm_c[0] = new CPaneMgr(mpTextScreen, 'mg_3flin', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTextScreen, MULTI_CHAR('mg_3flin'), 0, NULL); - mpTm_c[1] = new CPaneMgr(mpTextScreen, 't3f_s', 0, NULL); + mpTm_c[1] = new CPaneMgr(mpTextScreen, MULTI_CHAR('t3f_s'), 0, NULL); - field_0x0ec[0] = new CPaneMgr(mpTextScreen, 'mg_3f', 0, NULL); + field_0x0ec[0] = new CPaneMgr(mpTextScreen, MULTI_CHAR('mg_3f'), 0, NULL); - field_0x0ec[1] = new CPaneMgr(mpTextScreen, 'mg_3f_s', 0, NULL); + field_0x0ec[1] = new CPaneMgr(mpTextScreen, MULTI_CHAR('mg_3f_s'), 0, NULL); - mpTextScreen->search('n_3line')->hide(); - mpTextScreen->search('n_3fline')->show(); - mpTextScreen->search('n_e4line')->hide(); + mpTextScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpTextScreen->search(MULTI_CHAR('n_3fline'))->show(); + mpTextScreen->search(MULTI_CHAR('n_e4line'))->hide(); } else { - mpTm_c[0] = new CPaneMgr(mpTextScreen, 'mg_3line', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTextScreen, MULTI_CHAR('mg_3line'), 0, NULL); mpTm_c[1] = new CPaneMgr(mpTextScreen, 't3_s', 0, NULL); @@ -1465,12 +1465,12 @@ void dMeterButton_c::screenInitText() { field_0x0ec[1] = NULL; OS_REPORT("[%s] %d\n", __FILE__, __LINE__); - mpTextScreen->search('n_3line')->show(); - mpTextScreen->search('n_3fline')->hide(); - mpTextScreen->search('n_e4line')->hide(); + mpTextScreen->search(MULTI_CHAR('n_3line'))->show(); + mpTextScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpTextScreen->search(MULTI_CHAR('n_e4line'))->hide(); } #else - mpTm_c[0] = new CPaneMgr(mpTextScreen, 'mg_e4lin', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTextScreen, MULTI_CHAR('mg_e4lin'), 0, NULL); JUT_ASSERT(2504, mpTm_c[0] != NULL); mpTm_c[1] = new CPaneMgr(mpTextScreen, 't4_s', 0, NULL); @@ -1481,9 +1481,9 @@ void dMeterButton_c::screenInitText() { OS_REPORT("[%s] %d\n", __FILE__, 2512); - mpTextScreen->search('n_3line')->hide(); - mpTextScreen->search('n_3fline')->hide(); - mpTextScreen->search('n_e4line')->show(); + mpTextScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpTextScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpTextScreen->search(MULTI_CHAR('n_e4line'))->show(); #endif OS_REPORT("[%s] %d\n", __FILE__, 2554); @@ -3045,7 +3045,7 @@ f32 dMeterButton_c::getCenterPosCalc(u8 i_button, char* i_string, int param_2) { (mTextScale[param_2] * dMeter2Info_getStringLength(mpTextBox[0], i_string)) * temp_f0; if (field_0x4d9 == param_2 && field_0x4be[param_2] == 1) { - field_0x1e4[param_2] = mButtonBScale * mpButtonScreen->search('fishing')->getWidth(); + field_0x1e4[param_2] = mButtonBScale * mpButtonScreen->search(MULTI_CHAR('fishing'))->getWidth(); } field_0x29c[param_2] = field_0x1e4[param_2]; @@ -3058,15 +3058,15 @@ f32 dMeterButton_c::getCenterPosCalc(u8 i_button, char* i_string, int param_2) { switch (i_button) { case BUTTON_A_e: - mButtonWidth[i_button] = mButtonAScale * mpButtonScreen->search('a_btn1')->getWidth(); + mButtonWidth[i_button] = mButtonAScale * mpButtonScreen->search(MULTI_CHAR('a_btn1'))->getWidth(); field_0x304[i_button] = field_0x1e4[param_2] + mButtonWidth[i_button]; break; case BUTTON_B_e: - mButtonWidth[i_button] = mButtonBScale * mpButtonScreen->search('b_btn')->getWidth(); + mButtonWidth[i_button] = mButtonBScale * mpButtonScreen->search(MULTI_CHAR('b_btn'))->getWidth(); field_0x304[i_button] = field_0x1e4[param_2] + mButtonWidth[i_button]; break; case BUTTON_R_e: - mButtonWidth[i_button] = mButtonRScale * mpButtonScreen->search('r_btn_b')->getWidth(); + mButtonWidth[i_button] = mButtonRScale * mpButtonScreen->search(MULTI_CHAR('r_btn_b'))->getWidth(); field_0x304[i_button] = field_0x1e4[param_2] + mButtonWidth[i_button]; break; case BUTTON_Z_e: @@ -3076,8 +3076,8 @@ f32 dMeterButton_c::getCenterPosCalc(u8 i_button, char* i_string, int param_2) { Mtx m, m2; Vec sp124 = pane.getGlobalVtx(mpButtonScreen->search('zbtn'), &m, 0, false, 0); Vec sp130 = pane.getGlobalVtx(mpButtonScreen->search('zbtn'), &m, 3, false, 0); - Vec sp13C = pane.getGlobalVtx(mpButtonScreen->search('midona'), &m2, 0, false, 0); - Vec sp148 = pane.getGlobalVtx(mpButtonScreen->search('midona'), &m2, 3, false, 0); + Vec sp13C = pane.getGlobalVtx(mpButtonScreen->search(MULTI_CHAR('midona')), &m2, 0, false, 0); + Vec sp148 = pane.getGlobalVtx(mpButtonScreen->search(MULTI_CHAR('midona')), &m2, 3, false, 0); f32 var_f2; if (sp124.x > sp13C.x) { @@ -3099,47 +3099,47 @@ f32 dMeterButton_c::getCenterPosCalc(u8 i_button, char* i_string, int param_2) { field_0x304[i_button] = field_0x1e4[param_2] + mButtonWidth[i_button]; break; case BUTTON_3D_e: - mButtonWidth[i_button] = mButton3DScale * mpButtonScreen->search('as_btn1')->getWidth(); + mButtonWidth[i_button] = mButton3DScale * mpButtonScreen->search(MULTI_CHAR('as_btn1'))->getWidth(); if (dComIfGp_get3DDirection() & DIR_LEFT_e) { - mButtonWidth[i_button] += mButton3DScale * mpButtonScreen->search('yaji04')->getWidth(); + mButtonWidth[i_button] += mButton3DScale * mpButtonScreen->search(MULTI_CHAR('yaji04'))->getWidth(); } if (dComIfGp_get3DDirection() & DIR_RIGHT_e) { - mButtonWidth[i_button] += mButton3DScale * mpButtonScreen->search('yaji02')->getWidth(); + mButtonWidth[i_button] += mButton3DScale * mpButtonScreen->search(MULTI_CHAR('yaji02'))->getWidth(); } field_0x304[i_button] = 0.0f; break; case BUTTON_C_e: if (dComIfGp_checkCameraAttentionStatus(0, 8)) { - mButtonWidth[i_button] = mButtonCScale * mpButtonScreen->search('c_btn')->getWidth(); + mButtonWidth[i_button] = mButtonCScale * mpButtonScreen->search(MULTI_CHAR('c_btn'))->getWidth(); field_0x304[i_button] = 0.0f; } else { mButtonWidth[i_button] = - mButtonCScale * (mpButtonScreen->search('yaji_rn')->getWidth() + - mpButtonScreen->search('c_btn')->getWidth()); + mButtonCScale * (mpButtonScreen->search(MULTI_CHAR('yaji_rn'))->getWidth() + + mpButtonScreen->search(MULTI_CHAR('c_btn'))->getWidth()); field_0x304[i_button] = field_0x1e4[param_2] + mButtonWidth[i_button]; } break; case BUTTON_S_e: - mButtonWidth[i_button] = mButtonSScale * mpButtonScreen->search('a_btn2')->getWidth(); + mButtonWidth[i_button] = mButtonSScale * mpButtonScreen->search(MULTI_CHAR('a_btn2'))->getWidth(); field_0x304[i_button] = field_0x1e4[param_2] + mButtonWidth[i_button]; break; case BUTTON_X_e: - mButtonWidth[i_button] = mButtonXScale * mpButtonScreen->search('x_btn')->getWidth(); + mButtonWidth[i_button] = mButtonXScale * mpButtonScreen->search(MULTI_CHAR('x_btn'))->getWidth(); field_0x304[i_button] = field_0x1e4[param_2] + mButtonWidth[i_button]; break; case BUTTON_Y_e: - mButtonWidth[i_button] = mButtonYScale * mpButtonScreen->search('y_btn')->getWidth(); + mButtonWidth[i_button] = mButtonYScale * mpButtonScreen->search(MULTI_CHAR('y_btn'))->getWidth(); field_0x304[i_button] = field_0x1e4[param_2] + mButtonWidth[i_button]; break; case BUTTON_3DB_e: - mButtonWidth[i_button] = mButton3DBScale * mpButtonScreen->search('as_b_n')->getWidth(); + mButtonWidth[i_button] = mButton3DBScale * mpButtonScreen->search(MULTI_CHAR('as_b_n'))->getWidth(); field_0x304[i_button] = field_0x1e4[param_2] + mButtonWidth[i_button]; break; case BUTTON_BIN_e: - mButtonWidth[i_button] = field_0x5f0 * mpButtonScreen->search('bottl_n')->getWidth(); + mButtonWidth[i_button] = field_0x5f0 * mpButtonScreen->search(MULTI_CHAR('bottl_n'))->getWidth(); field_0x304[i_button] = 0.0f; break; } diff --git a/src/d/d_meter_haihai.cpp b/src/d/d_meter_haihai.cpp index f1b647502a..5e6c9fd3e7 100644 --- a/src/d/d_meter_haihai.cpp +++ b/src/d/d_meter_haihai.cpp @@ -30,7 +30,7 @@ int dMeterHaihai_c::_create() { JUT_ASSERT(0, fg != false); dPaneClass_showNullPane(mpHaihaiScreen); - mpParent = new CPaneMgr(mpHaihaiScreen, 'n_all', 2, NULL); + mpParent = new CPaneMgr(mpHaihaiScreen, MULTI_CHAR('n_all'), 2, NULL); JUT_ASSERT(0, mpParent != NULL); OSInitFastCast(); @@ -300,9 +300,9 @@ void dMeterHaihai_c::playBckAnime(J2DAnmTransformKey* i_bck) { } i_bck->setFrame(mBckFrame); - mpHaihaiScreen->search('n_anim')->setAnimation(i_bck); - mpHaihaiScreen->search('n_anim')->animationTransform(); - mpHaihaiScreen->search('n_anim')->setAnimation((J2DAnmTransform*)NULL); + mpHaihaiScreen->search(MULTI_CHAR('n_anim'))->setAnimation(i_bck); + mpHaihaiScreen->search(MULTI_CHAR('n_anim'))->animationTransform(); + mpHaihaiScreen->search(MULTI_CHAR('n_anim'))->setAnimation((J2DAnmTransform*)NULL); } } @@ -323,8 +323,8 @@ void dMeterHaihai_c::playBtkAnime(J2DAnmTextureSRTKey* i_btk) { } i_btk->setFrame(mBtkFrame); - mpHaihaiScreen->search('yaji00')->setAnimation(i_btk); - mpHaihaiScreen->search('yaji01')->setAnimation(i_btk); + mpHaihaiScreen->search(MULTI_CHAR('yaji00'))->setAnimation(i_btk); + mpHaihaiScreen->search(MULTI_CHAR('yaji01'))->setAnimation(i_btk); } } @@ -345,7 +345,7 @@ void dMeterHaihai_c::playBpkAnime(J2DAnmColor* i_bpk) { } i_bpk->setFrame(mBpkFrame); - mpHaihaiScreen->search('npc_l1')->setAnimation(i_bpk); - mpHaihaiScreen->search('yaji_l')->setAnimation(i_bpk); + mpHaihaiScreen->search(MULTI_CHAR('npc_l1'))->setAnimation(i_bpk); + mpHaihaiScreen->search(MULTI_CHAR('yaji_l'))->setAnimation(i_bpk); } } diff --git a/src/d/d_meter_hakusha.cpp b/src/d/d_meter_hakusha.cpp index ab9a0fc833..094ca82152 100644 --- a/src/d/d_meter_hakusha.cpp +++ b/src/d/d_meter_hakusha.cpp @@ -25,7 +25,7 @@ dMeterHakusha_c::~dMeterHakusha_c() { int dMeterHakusha_c::_create() { static u64 haku_tag[] = { - 'haku_n00', 'haku_n01', 'haku_n02', 'haku_n03', 'haku_n04', 'haku_n05', + MULTI_CHAR('haku_n00'), MULTI_CHAR('haku_n01'), MULTI_CHAR('haku_n02'), MULTI_CHAR('haku_n03'), MULTI_CHAR('haku_n04'), MULTI_CHAR('haku_n05'), }; for (int i = 0; i < 6; i++) { @@ -33,7 +33,7 @@ int dMeterHakusha_c::_create() { JUT_ASSERT(0, mpHakushaPos[i] != NULL); } - mpHakushaParent = new CPaneMgr(field_0x004, 'hakunall', 0, NULL); + mpHakushaParent = new CPaneMgr(field_0x004, MULTI_CHAR('hakunall'), 0, NULL); JUT_ASSERT(0, mpHakushaParent != NULL); mpHakushaScreen = new J2DScreen(); @@ -44,10 +44,10 @@ int dMeterHakusha_c::_create() { JUT_ASSERT(0, fg != false); dPaneClass_showNullPane(mpHakushaScreen); - mpHakushaOn = new CPaneMgr(mpHakushaScreen, 'haku_n', 2, NULL); + mpHakushaOn = new CPaneMgr(mpHakushaScreen, MULTI_CHAR('haku_n'), 2, NULL); JUT_ASSERT(0, mpHakushaOn != NULL); - mpHakushaOff = new CPaneMgr(mpHakushaScreen, 'haku_b_n', 2, NULL); + mpHakushaOff = new CPaneMgr(mpHakushaScreen, MULTI_CHAR('haku_b_n'), 2, NULL); JUT_ASSERT(0, mpHakushaOff != NULL); mpHakushaOn->setAlphaRate(0.0f); @@ -73,12 +73,12 @@ int dMeterHakusha_c::_create() { JUT_ASSERT(0, fg != false); dPaneClass_showNullPane(mpButtonScreen); - mpButtonA = new CPaneMgr(mpButtonScreen, 'abtn_n', 2, NULL); + mpButtonA = new CPaneMgr(mpButtonScreen, MULTI_CHAR('abtn_n'), 2, NULL); JUT_ASSERT(0, mpButtonA != NULL); mpButtonA->show(); mpButtonA->setAlphaRate(0.0f); - mpButtonScreen->search('info_n')->translate(0.0f, 0.0f); + mpButtonScreen->search(MULTI_CHAR('info_n'))->translate(0.0f, 0.0f); field_0x100 = g_drawHIO.mButtonAHorsePosX; field_0x104 = g_drawHIO.mButtonAHorsePosY; diff --git a/src/d/d_meter_string.cpp b/src/d/d_meter_string.cpp index c416244d18..47002a7e6d 100644 --- a/src/d/d_meter_string.cpp +++ b/src/d/d_meter_string.cpp @@ -57,19 +57,19 @@ int dMeterString_c::_create() { mpGetInBck = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load( JKRGetNameResource("zelda_game_image_cow_get_in.bck", mpMapArchive)); - mpParentPane = new CPaneMgr(mpScreen, 'get_in_n', 2, NULL); + mpParentPane = new CPaneMgr(mpScreen, MULTI_CHAR('get_in_n'), 2, NULL); JUT_ASSERT(0, mpParentPane != NULL); - mpRootPane = new CPaneMgr(mpScreen, 'n_all', 0, NULL); + mpRootPane = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 0, NULL); JUT_ASSERT(0, mpRootPane != NULL); - mpTextPane = new CPaneMgr(mpScreen, 'get_in', 0, NULL); + mpTextPane = new CPaneMgr(mpScreen, MULTI_CHAR('get_in'), 0, NULL); JUT_ASSERT(0, mpTextPane != NULL); - static_cast(mpScreen->search('get_in_s'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('get_in'))->setFont(mDoExt_getMesgFont()); - static_cast(mpScreen->search('get_in_s'))->setString(0x100, ""); - static_cast(mpScreen->search('get_in'))->setString(0x100, ""); + static_cast(mpScreen->search(MULTI_CHAR('get_in_s')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('get_in')))->setFont(mDoExt_getMesgFont()); + static_cast(mpScreen->search(MULTI_CHAR('get_in_s')))->setString(0x100, ""); + static_cast(mpScreen->search(MULTI_CHAR('get_in')))->setString(0x100, ""); mAnimFrame = 0.0f; mPikariAnimFrame = 0.0f; @@ -165,8 +165,8 @@ int dMeterString_c::_delete() { int dMeterString_c::createString(int i_stringID) { char str_buf[32]; dMeter2Info_getString(i_stringID, str_buf, NULL); - strcpy(static_cast(mpScreen->search('get_in_s'))->getStringPtr(), str_buf); - strcpy(static_cast(mpScreen->search('get_in'))->getStringPtr(), str_buf); + strcpy(static_cast(mpScreen->search(MULTI_CHAR('get_in_s')))->getStringPtr(), str_buf); + strcpy(static_cast(mpScreen->search(MULTI_CHAR('get_in')))->getStringPtr(), str_buf); mAnimFrame = 40.0f; mPikariAnimFrame = -1.0f; diff --git a/src/d/d_msg_scrn_3select.cpp b/src/d/d_msg_scrn_3select.cpp index f8c9167be1..525c619fe2 100644 --- a/src/d/d_msg_scrn_3select.cpp +++ b/src/d/d_msg_scrn_3select.cpp @@ -25,16 +25,16 @@ processFn process[] = { dMsgScrn3Select_c::dMsgScrn3Select_c() { static u64 const tag_name[3][12] = { // A - 'a_n', 'a_g', 'a_gr', 'a_m', 'w_yes_00', 'w_yes_01', 'w_yes_02', 'w_yes_03', 'w_yes_04', - 'sel_po00', 'a_kahen', 'a_cursor', + 'a_n', 'a_g', 'a_gr', 'a_m', MULTI_CHAR('w_yes_00'), MULTI_CHAR('w_yes_01'), MULTI_CHAR('w_yes_02'), MULTI_CHAR('w_yes_03'), MULTI_CHAR('w_yes_04'), + MULTI_CHAR('sel_po00'), MULTI_CHAR('a_kahen'), MULTI_CHAR('a_cursor'), // B - 'b_n', 'b_g', 'b_gr', 'b_m', 'w_yes_07', 'w_yes_06', 'w_yes_05', 'w_yes_08', 'w_yes_09', - 'sel_po01', 'b_kahen', 'b_cursor', + 'b_n', 'b_g', 'b_gr', 'b_m', MULTI_CHAR('w_yes_07'), MULTI_CHAR('w_yes_06'), MULTI_CHAR('w_yes_05'), MULTI_CHAR('w_yes_08'), MULTI_CHAR('w_yes_09'), + MULTI_CHAR('sel_po01'), MULTI_CHAR('b_kahen'), MULTI_CHAR('b_cursor'), // C - 'c_n', 'c_g', 'c_gr', 'c_m', 'w_yes_12', 'w_yes_11', 'w_yes_10', 'w_yes_13', 'w_yes_14', - 'sel_po02', 'c_kahen', 'c_cursor' + 'c_n', 'c_g', 'c_gr', 'c_m', MULTI_CHAR('w_yes_12'), MULTI_CHAR('w_yes_11'), MULTI_CHAR('w_yes_10'), MULTI_CHAR('w_yes_13'), MULTI_CHAR('w_yes_14'), + MULTI_CHAR('sel_po02'), MULTI_CHAR('c_kahen'), MULTI_CHAR('c_cursor') }; mpScreen = new J2DScreen(); @@ -66,7 +66,7 @@ dMsgScrn3Select_c::dMsgScrn3Select_c() { JUT_ASSERT(0, mpSelectCursor != NULL); mpSelectCursor->setAlphaRate(0.0f); - mpParent = new CPaneMgr(mpScreen, 'abc_n', 0, NULL); + mpParent = new CPaneMgr(mpScreen, MULTI_CHAR('abc_n'), 0, NULL); JUT_ASSERT(0, mpParent != NULL); for (int i = 0; i < 3; i++) { @@ -115,11 +115,11 @@ dMsgScrn3Select_c::dMsgScrn3Select_c() { mpTmSel_c[2] = new CPaneMgr(mpScreen, 'c_tf', 0, NULL); - mpTmrSel_c[0] = new CPaneMgr(mpScreen, 'a_tf_f', 0, NULL); + mpTmrSel_c[0] = new CPaneMgr(mpScreen, MULTI_CHAR('a_tf_f'), 0, NULL); - mpTmrSel_c[1] = new CPaneMgr(mpScreen, 'b_tf_f', 0, NULL); + mpTmrSel_c[1] = new CPaneMgr(mpScreen, MULTI_CHAR('b_tf_f'), 0, NULL); - mpTmrSel_c[2] = new CPaneMgr(mpScreen, 'c_tf_f', 0, NULL); + mpTmrSel_c[2] = new CPaneMgr(mpScreen, MULTI_CHAR('c_tf_f'), 0, NULL); for (int i = 0; i < 3; i++) { ((J2DTextBox*)(mpTmSel_c[i]->getPanePtr()))->setString(64, ""); @@ -129,15 +129,15 @@ dMsgScrn3Select_c::dMsgScrn3Select_c() { ((J2DTextBox*)(mpTmrSel_c[i]->getPanePtr()))->setFont(mDoExt_getMesgFont()); } - mpScreen->search('a_t_e')->hide(); - mpScreen->search('b_t_e')->hide(); - mpScreen->search('c_t_e')->hide(); + mpScreen->search(MULTI_CHAR('a_t_e'))->hide(); + mpScreen->search(MULTI_CHAR('b_t_e'))->hide(); + mpScreen->search(MULTI_CHAR('c_t_e'))->hide(); mpScreen->search('a_tf')->show(); mpScreen->search('b_tf')->show(); mpScreen->search('c_tf')->show(); - mpScreen->search('a_tf_f')->show(); - mpScreen->search('b_tf_f')->show(); - mpScreen->search('c_tf_f')->show(); + mpScreen->search(MULTI_CHAR('a_tf_f'))->show(); + mpScreen->search(MULTI_CHAR('b_tf_f'))->show(); + mpScreen->search(MULTI_CHAR('c_tf_f'))->show(); mpScreen->search('a_t')->hide(); mpScreen->search('b_t')->hide(); mpScreen->search('c_t')->hide(); @@ -154,27 +154,27 @@ dMsgScrn3Select_c::dMsgScrn3Select_c() { mpTmrSel_c[i] = NULL; } - mpScreen->search('a_t_e')->hide(); - mpScreen->search('b_t_e')->hide(); - mpScreen->search('c_t_e')->hide(); + mpScreen->search(MULTI_CHAR('a_t_e'))->hide(); + mpScreen->search(MULTI_CHAR('b_t_e'))->hide(); + mpScreen->search(MULTI_CHAR('c_t_e'))->hide(); mpScreen->search('a_tf')->hide(); mpScreen->search('b_tf')->hide(); mpScreen->search('c_tf')->hide(); - mpScreen->search('a_tf_f')->hide(); - mpScreen->search('b_tf_f')->hide(); - mpScreen->search('c_tf_f')->hide(); + mpScreen->search(MULTI_CHAR('a_tf_f'))->hide(); + mpScreen->search(MULTI_CHAR('b_tf_f'))->hide(); + mpScreen->search(MULTI_CHAR('c_tf_f'))->hide(); mpScreen->search('a_t')->show(); mpScreen->search('b_t')->show(); mpScreen->search('c_t')->show(); } #else - mpTmSel_c[0] = new CPaneMgr(mpScreen, 'a_t_e', 0, NULL); + mpTmSel_c[0] = new CPaneMgr(mpScreen, MULTI_CHAR('a_t_e'), 0, NULL); JUT_ASSERT(0, mpTmSel_c[0] != NULL); - mpTmSel_c[1] = new CPaneMgr(mpScreen, 'b_t_e', 0, NULL); + mpTmSel_c[1] = new CPaneMgr(mpScreen, MULTI_CHAR('b_t_e'), 0, NULL); JUT_ASSERT(0, mpTmSel_c[1] != NULL); - mpTmSel_c[2] = new CPaneMgr(mpScreen, 'c_t_e', 0, NULL); + mpTmSel_c[2] = new CPaneMgr(mpScreen, MULTI_CHAR('c_t_e'), 0, NULL); JUT_ASSERT(0, mpTmSel_c[2] != NULL); for (int i = 0; i < 3; i++) { @@ -183,15 +183,15 @@ dMsgScrn3Select_c::dMsgScrn3Select_c() { mpTmrSel_c[i] = NULL; } - mpScreen->search('a_t_e')->show(); - mpScreen->search('b_t_e')->show(); - mpScreen->search('c_t_e')->show(); + mpScreen->search(MULTI_CHAR('a_t_e'))->show(); + mpScreen->search(MULTI_CHAR('b_t_e'))->show(); + mpScreen->search(MULTI_CHAR('c_t_e'))->show(); mpScreen->search('a_tf')->hide(); mpScreen->search('b_tf')->hide(); mpScreen->search('c_tf')->hide(); - mpScreen->search('a_tf_f')->hide(); - mpScreen->search('b_tf_f')->hide(); - mpScreen->search('c_tf_f')->hide(); + mpScreen->search(MULTI_CHAR('a_tf_f'))->hide(); + mpScreen->search(MULTI_CHAR('b_tf_f'))->hide(); + mpScreen->search(MULTI_CHAR('c_tf_f'))->hide(); mpScreen->search('a_t')->hide(); mpScreen->search('b_t')->hide(); mpScreen->search('c_t')->hide(); diff --git a/src/d/d_msg_scrn_arrow.cpp b/src/d/d_msg_scrn_arrow.cpp index 1ad714f839..ba85ceea2f 100644 --- a/src/d/d_msg_scrn_arrow.cpp +++ b/src/d/d_msg_scrn_arrow.cpp @@ -25,23 +25,23 @@ dMsgScrnArrow_c::dMsgScrnArrow_c() { mpBpk->searchUpdateMaterialID(mpScreen); mBpkFrame = 0.0f; - mpParent_c = new CPaneMgr(mpScreen, 'set_ya_n', 0, NULL); + mpParent_c = new CPaneMgr(mpScreen, MULTI_CHAR('set_ya_n'), 0, NULL); JUT_ASSERT(0, mpParent_c != NULL); - mpArw_c = new CPaneMgr(mpScreen, 'ya_next', 0, NULL); + mpArw_c = new CPaneMgr(mpScreen, MULTI_CHAR('ya_next'), 0, NULL); JUT_ASSERT(0, mpArw_c != NULL); mpArw_c->hide(); mpArw_c->mPane->setAnimation(mpBck); - mpScreen->search('yajnext')->setAnimation(mpBpk); - mpScreen->search('yajinexl')->setAnimation(mpBpk); + mpScreen->search(MULTI_CHAR('yajnext'))->setAnimation(mpBpk); + mpScreen->search(MULTI_CHAR('yajinexl'))->setAnimation(mpBpk); - mpDot_c = new CPaneMgr(mpScreen, 'ya_end', 0, NULL); + mpDot_c = new CPaneMgr(mpScreen, MULTI_CHAR('ya_end'), 0, NULL); JUT_ASSERT(0, mpDot_c != NULL); mpDot_c->hide(); - mpScreen->search('yaj_end')->setAnimation(mpBpk); - mpScreen->search('yajiendl')->setAnimation(mpBpk); + mpScreen->search(MULTI_CHAR('yaj_end'))->setAnimation(mpBpk); + mpScreen->search(MULTI_CHAR('yajiendl'))->setAnimation(mpBpk); } dMsgScrnArrow_c::~dMsgScrnArrow_c() { diff --git a/src/d/d_msg_scrn_boss.cpp b/src/d/d_msg_scrn_boss.cpp index 242fa4af22..d2110e7cec 100644 --- a/src/d/d_msg_scrn_boss.cpp +++ b/src/d/d_msg_scrn_boss.cpp @@ -8,7 +8,7 @@ dMsgScrnBoss_c::dMsgScrnBoss_c() { static u64 t_tag[7] = { - 'sfontb0', 'sfontb1', 'sfontb2', 'sfontl0', 'sfontl1', 'sfontl2', 'sfont00', + MULTI_CHAR('sfontb0'), MULTI_CHAR('sfontb1'), MULTI_CHAR('sfontb2'), MULTI_CHAR('sfontl0'), MULTI_CHAR('sfontl1'), MULTI_CHAR('sfontl2'), MULTI_CHAR('sfont00'), }; init(); @@ -17,15 +17,15 @@ dMsgScrnBoss_c::dMsgScrnBoss_c() { mpScreen->setPriority("zelda_boss_name.blo", 0x20000, dComIfGp_getMsgArchive(4)); dPaneClass_showNullPane(mpScreen); - mpPmP_c = new CPaneMgr(mpScreen, 'n_all', 2, NULL); + mpPmP_c = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 2, NULL); mpPmP_c->scale(g_MsgObject_HIO_c.mBossNameScaleX, g_MsgObject_HIO_c.mBossNameScaleY); - mpFontParent = new CPaneMgr(mpScreen, 's_font_n', 0, NULL); + mpFontParent = new CPaneMgr(mpScreen, MULTI_CHAR('s_font_n'), 0, NULL); mpFontParent->scale(g_MsgObject_HIO_c.mBossNameCharSizeX, g_MsgObject_HIO_c.mBossNameCharSizeY); mpFontParent->paneTrans(g_MsgObject_HIO_c.mBossNameCharPosX, g_MsgObject_HIO_c.mBossNameCharPosY); - mpBaseParent = new CPaneMgr(mpScreen, 'base_n', 2, NULL); + mpBaseParent = new CPaneMgr(mpScreen, MULTI_CHAR('base_n'), 2, NULL); mpBaseParent->scale(g_MsgObject_HIO_c.mBossNameBaseSizeX, g_MsgObject_HIO_c.mBossNameBaseSizeY); mpBaseParent->paneTrans(g_MsgObject_HIO_c.mBossNameBasePosX, g_MsgObject_HIO_c.mBossNameBasePosY); diff --git a/src/d/d_msg_scrn_explain.cpp b/src/d/d_msg_scrn_explain.cpp index 60d1379b50..4c48a4b558 100644 --- a/src/d/d_msg_scrn_explain.cpp +++ b/src/d/d_msg_scrn_explain.cpp @@ -81,18 +81,16 @@ dMsgScrnExplain_c::dMsgScrnExplain_c(STControl* i_stick, u8 param_1, bool i_isUs JUT_ASSERT(119, fg != false); dPaneClass_showNullPane(mpTxScreen); - mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_3line', 0, NULL); - JUT_ASSERT(124, mpTm_c[0] != NULL); - + mpTm_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3line'), 0, NULL); mpTm_c[1] = new CPaneMgr(mpTxScreen, 't3_s', 0, NULL); JUT_ASSERT(127, mpTm_c[1] != NULL); mpTmr_c[0] = NULL; mpTmr_c[1] = NULL; - mpTxScreen->search('n_3line')->show(); - mpTxScreen->search('n_3fline')->hide(); - mpTxScreen->search('n_e4line')->hide(); + mpTxScreen->search(MULTI_CHAR('n_3line'))->show(); + mpTxScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_e4line'))->hide(); #if VERSION == VERSION_GCN_JPN field_0x50 = 0.0f; @@ -106,47 +104,45 @@ dMsgScrnExplain_c::dMsgScrnExplain_c(STControl* i_stick, u8 param_1, bool i_isUs JUT_ASSERT(153, fg != false); dPaneClass_showNullPane(mpTxScreen); - mpScreen->search('n_all')->scale(g_MsgObject_HIO_c.mBoxTalkScaleX, + mpScreen->search(MULTI_CHAR('n_all'))->scale(g_MsgObject_HIO_c.mBoxTalkScaleX, g_MsgObject_HIO_c.mBoxTalkScaleY); #if VERSION == VERSION_GCN_JPN field_0x50 = 0.0f; if (dComIfGs_getOptRuby() == 0) { - mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_3flin', 0, NULL); - mpTm_c[1] = new CPaneMgr(mpTxScreen, 't3f_s', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3flin'), 0, NULL); + mpTm_c[1] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3f_s'), 0, NULL); - mpTmr_c[0] = new CPaneMgr(mpTxScreen, 'mg_3f', 0, NULL); - mpTmr_c[1] = new CPaneMgr(mpTxScreen, 'mg_3f_s', 0, NULL); + field_0x10[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3f'), 0, NULL); + field_0x10[1] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3f_s'), 0, NULL); - mpTxScreen->search('n_3line')->hide(); - mpTxScreen->search('n_3fline')->show(); - mpTxScreen->search('n_e4line')->hide(); + mpTxScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_3fline'))->show(); + mpTxScreen->search(MULTI_CHAR('n_e4line'))->hide(); } else { - mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_3line', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3line'), 0, NULL); mpTm_c[1] = new CPaneMgr(mpTxScreen, 't3_s', 0, NULL); mpTmr_c[0] = NULL; mpTmr_c[1] = NULL; - mpTxScreen->search('n_3line')->show(); - mpTxScreen->search('n_3fline')->hide(); - mpTxScreen->search('n_e4line')->hide(); + mpTxScreen->search(MULTI_CHAR('n_3line'))->show(); + mpTxScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_e4line'))->hide(); } #else field_0x50 = -10.0f; - mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_e4lin', 0, NULL); - JUT_ASSERT(162, mpTm_c[0] != NULL); - + mpTm_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_e4lin'), 0, NULL); mpTm_c[1] = new CPaneMgr(mpTxScreen, 't4_s', 0, NULL); JUT_ASSERT(165, mpTm_c[1] != NULL); mpTmr_c[0] = NULL; mpTmr_c[1] = NULL; - mpTxScreen->search('n_3line')->hide(); - mpTxScreen->search('n_3fline')->hide(); - mpTxScreen->search('n_e4line')->show(); + mpTxScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_e4line'))->show(); #endif if (param_1 == 2 || param_1 == 4) { @@ -177,19 +173,13 @@ dMsgScrnExplain_c::dMsgScrnExplain_c(STControl* i_stick, u8 param_1, bool i_isUs } } - mpScreen->search('mg_null')->move( - g_MsgObject_HIO_c.mTextPosX + mpScreen->search('mg_null')->getBounds().i.x, - g_MsgObject_HIO_c.mTextPosY + mpScreen->search('mg_null')->getBounds().i.y); - - mpArw_c = new CPaneMgr(mpScreen, 'set_ya_n', 0, NULL); - JUT_ASSERT(241, mpArw_c != NULL); - - mpMg_c[0] = new CPaneMgr(mpScreen, 'mg_null', 0, NULL); - JUT_ASSERT(244, mpMg_c[0] != NULL); - - mpMg_c[1] = new CPaneMgr(mpTxScreen, 'mg_null', 0, NULL); - JUT_ASSERT(247, mpMg_c[1] != NULL); + mpScreen->search(MULTI_CHAR('mg_null'))->move( + g_MsgObject_HIO_c.mTextPosX + mpScreen->search(MULTI_CHAR('mg_null'))->getBounds().i.x, + g_MsgObject_HIO_c.mTextPosY + mpScreen->search(MULTI_CHAR('mg_null'))->getBounds().i.y); + mpArw_c = new CPaneMgr(mpScreen, MULTI_CHAR('set_ya_n'), 0, NULL); + mpMg_c[0] = new CPaneMgr(mpScreen, MULTI_CHAR('mg_null'), 0, NULL); + mpMg_c[1] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_null'), 0, NULL); mpRoot_c[0] = new CPaneMgr(mpScreen, 'ROOT', 2, NULL); JUT_ASSERT(250, mpRoot_c[0] != NULL); @@ -295,7 +285,7 @@ void dMsgScrnExplain_c::move() { (this->*init_process[mStatus])(); } - mpScreen->search('n_all')->scale(g_MsgObject_HIO_c.mBoxTalkScaleX, + mpScreen->search(MULTI_CHAR('n_all'))->scale(g_MsgObject_HIO_c.mBoxTalkScaleX, g_MsgObject_HIO_c.mBoxTalkScaleY); } diff --git a/src/d/d_msg_scrn_howl.cpp b/src/d/d_msg_scrn_howl.cpp index 1790501930..473de9c350 100644 --- a/src/d/d_msg_scrn_howl.cpp +++ b/src/d/d_msg_scrn_howl.cpp @@ -39,18 +39,18 @@ static dMsgScrnHowl_cFunc process[5] = { dMsgScrnHowl_c::dMsgScrnHowl_c() { static u64 ylinen_tag[3] = { - 'ylinen00', - 'ylinen02', - 'ylinen04', + MULTI_CHAR('ylinen00'), + MULTI_CHAR('ylinen02'), + MULTI_CHAR('ylinen04'), }; static u64 tlinen_tag[7] = { - 'tlinen00', 'tlinen01', 'tlinen02', 'tlinen03', 'tlinen04', 'tlinen05', 'tlinen06', + MULTI_CHAR('tlinen00'), MULTI_CHAR('tlinen01'), MULTI_CHAR('tlinen02'), MULTI_CHAR('tlinen03'), MULTI_CHAR('tlinen04'), MULTI_CHAR('tlinen05'), MULTI_CHAR('tlinen06'), }; static u64 tline_tag[7] = { - 'tline00', 'tline01', 'tline02', 'tline03', 'tlinen04', 'tline05', 'tline06', + MULTI_CHAR('tline00'), MULTI_CHAR('tline01'), MULTI_CHAR('tline02'), MULTI_CHAR('tline03'), MULTI_CHAR('tlinen04'), MULTI_CHAR('tline05'), MULTI_CHAR('tline06'), }; static u64 tlines_tag[7] = { - 'tlines00', 'tlines01', 'tlines02', 'tlines03', 'tlines04', 'tlines05', 'tlines06', + MULTI_CHAR('tlines00'), MULTI_CHAR('tlines01'), MULTI_CHAR('tlines02'), MULTI_CHAR('tlines03'), MULTI_CHAR('tlines04'), MULTI_CHAR('tlines05'), MULTI_CHAR('tlines06'), }; init(); @@ -59,31 +59,31 @@ dMsgScrnHowl_c::dMsgScrnHowl_c() { bool fg = mpScreen->setPriority("zelda_wolf_howl.blo", 0x20000, dComIfGp_getMsgArchive(5)); JUT_ASSERT(73, fg != false); dPaneClass_showNullPane(mpScreen); - mpScreen->search('line00')->hide(); - mpPmP_c = new CPaneMgr(mpScreen, 'n_all', 3, NULL); + mpScreen->search(MULTI_CHAR('line00'))->hide(); + mpPmP_c = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 3, NULL); JUT_ASSERT(79, mpPmP_c != NULL); mpScreen->search('ag_n')->hide(); field_0x1994 = 0.0f; field_0x1998 = 0.0f; - mpScreen->search('wi_btn_n')->hide(); - mpButtonIcon[0] = new CPaneMgr(mpScreen, 'cbtn_n', 2, NULL); + mpScreen->search(MULTI_CHAR('wi_btn_n'))->hide(); + mpButtonIcon[0] = new CPaneMgr(mpScreen, MULTI_CHAR('cbtn_n'), 2, NULL); JUT_ASSERT(91, mpButtonIcon[0] != NULL); - mpButtonText[0] = new CPaneMgr(mpScreen, 'g_ltxt_n', 2, NULL); + mpButtonText[0] = new CPaneMgr(mpScreen, MULTI_CHAR('g_ltxt_n'), 2, NULL); JUT_ASSERT(93, mpButtonText[0] != NULL); - mpButtonIcon[1] = new CPaneMgr(mpScreen, 'abt_n', 2, NULL); + mpButtonIcon[1] = new CPaneMgr(mpScreen, MULTI_CHAR('abt_n'), 2, NULL); JUT_ASSERT(96, mpButtonIcon[1] != NULL); - mpButtonText[1] = new CPaneMgr(mpScreen, 'gr_txt_n', 2, NULL); + mpButtonText[1] = new CPaneMgr(mpScreen, MULTI_CHAR('gr_txt_n'), 2, NULL); JUT_ASSERT(98, mpButtonText[1] != NULL); #if VERSION == VERSION_GCN_JPN - J2DTextBox* piStack_19c = (J2DTextBox*)mpScreen->search('g_l_info'); - J2DTextBox* piStack_1a0 = (J2DTextBox*)mpScreen->search('g_r_info'); - mpScreen->search('fgr_info')->hide(); - mpScreen->search('fgl_info')->hide(); + J2DTextBox* piStack_19c = (J2DTextBox*)mpScreen->search(MULTI_CHAR('g_l_info')); + J2DTextBox* piStack_1a0 = (J2DTextBox*)mpScreen->search(MULTI_CHAR('g_r_info')); + mpScreen->search(MULTI_CHAR('fgr_info'))->hide(); + mpScreen->search(MULTI_CHAR('fgl_info'))->hide(); #else - J2DTextBox* piStack_19c = (J2DTextBox*)mpScreen->search('fgl_info'); - J2DTextBox* piStack_1a0 = (J2DTextBox*)mpScreen->search('fgr_info'); - mpScreen->search('g_l_info')->hide(); - mpScreen->search('g_r_info')->hide(); + J2DTextBox* piStack_19c = (J2DTextBox*)mpScreen->search(MULTI_CHAR('fgl_info')); + J2DTextBox* piStack_1a0 = (J2DTextBox*)mpScreen->search(MULTI_CHAR('fgr_info')); + mpScreen->search(MULTI_CHAR('g_l_info'))->hide(); + mpScreen->search(MULTI_CHAR('g_r_info'))->hide(); #endif piStack_19c->setString(0x40, ""); piStack_19c->setFont(mDoExt_getMesgFont()); @@ -138,9 +138,9 @@ dMsgScrnHowl_c::dMsgScrnHowl_c() { field_0x2136 = (350.0f / field_0x1980); field_0x2138 = 0; field_0x1984 = 255.0f / field_0x2136; - mpABase = new CPaneMgr(mpScreen, 'a_base', 0, NULL); + mpABase = new CPaneMgr(mpScreen, MULTI_CHAR('a_base'), 0, NULL); JUT_ASSERT(218, mpABase != NULL); - mpLineAll = new CPaneMgr(mpScreen, 'line_all', 0, NULL); + mpLineAll = new CPaneMgr(mpScreen, MULTI_CHAR('line_all'), 0, NULL); JUT_ASSERT(221, mpLineAll != NULL); f32 in_f31; for (int i = 0; i < 7; i++) { @@ -184,7 +184,7 @@ dMsgScrnHowl_c::dMsgScrnHowl_c() { res = (ResTIMG const*)dComIfGp_getMsgArchive(5)->getResource('TIMG', "tt_black_32.bti"); mpGuideDot = new J2DPicture(res); JUT_ASSERT(280, mpGuideDot != NULL); - mpGuideDot->setBlackWhite(((J2DPicture*)mpScreen->search('line00'))->getBlack(), ((J2DPicture*)mpScreen->search('line00'))->getWhite()); + mpGuideDot->setBlackWhite(((J2DPicture*)mpScreen->search(MULTI_CHAR('line00')))->getBlack(), ((J2DPicture*)mpScreen->search(MULTI_CHAR('line00')))->getWhite()); res = (ResTIMG const*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_iastarRR.bti"); mpTopBall = new J2DPicture(res); JUT_ASSERT(287, mpTopBall != NULL); @@ -197,8 +197,8 @@ dMsgScrnHowl_c::dMsgScrnHowl_c() { mpTopBallTail[i]->setBlackWhite(g_MsgObject_HIO_c.mHowlHIO.mDotBlack, g_MsgObject_HIO_c.mHowlHIO.mDotWhite); } field_0x2134 = 0; - field_0x1988 = mpScreen->search('line00')->getWidth(); - field_0x198c = mpScreen->search('line00')->getHeight(); + field_0x1988 = mpScreen->search(MULTI_CHAR('line00'))->getWidth(); + field_0x198c = mpScreen->search(MULTI_CHAR('line00'))->getHeight(); field_0x2194 = daAlink_getAlinkActorClass()->getCorrectCurveID(); mCorrectLineMax = 0; field_0x2197 = 0; @@ -674,7 +674,7 @@ void dMsgScrnHowl_c::drawGuide() { } if (dVar16 > 0.0f) { mpGuideDot->setAlpha( - dVar16 * (mpScreen->search('line00')->getAlpha() * mpPmP_c->getAlphaRate())); + dVar16 * (mpScreen->search(MULTI_CHAR('line00'))->getAlpha() * mpPmP_c->getAlphaRate())); mpGuideDot->draw((2.0f + (local_f0 - local_f8 / 2)), (local_f4 - local_fc / 2), local_f8, local_fc, false, false, false); } @@ -771,7 +771,7 @@ void dMsgScrnHowl_c::drawGuide2() { } if (guideAlpha > 0.0f && local_94 > 0.0f) { mpGuideDot->setAlpha(local_94 * - (guideAlpha * (mpScreen->search('line00')->getAlpha() * + (guideAlpha * (mpScreen->search(MULTI_CHAR('line00'))->getAlpha() * mpPmP_c->getAlphaRate()))); mpGuideDot->draw(2.0f + (local_a0 - local_a8 / 2), local_a4 - local_ac / 2, local_a8, local_ac, false, false, false); @@ -810,7 +810,7 @@ void dMsgScrnHowl_c::drawEffect() { 12.0f + ((vec2.x - vec1.x) / (mDoGph_gInf_c::getWidthF() / FB_WIDTH)), field_0x2120); grafContext->setScissor(); u8 timer = daAlink_getAlinkActorClass()->getWolfHowlMgrP()->getReleaseTimer(); - u8 screenAlpha = mpScreen->search('line00')->getAlpha(); + u8 screenAlpha = mpScreen->search(MULTI_CHAR('line00'))->getAlpha(); mpWaveTex->setAlpha((screenAlpha * mpPmP_c->getAlphaRate()) * ((30 - timer) / 30.0f)); f32 fVar2 = field_0x2128 * field_0x1980; f32 fVar3 = mpLineH[0]->getGlobalPosX() - field_0x27a8; diff --git a/src/d/d_msg_scrn_item.cpp b/src/d/d_msg_scrn_item.cpp index e6cd7f582a..4010c56443 100644 --- a/src/d/d_msg_scrn_item.cpp +++ b/src/d/d_msg_scrn_item.cpp @@ -146,10 +146,10 @@ dMsgScrnItem_c::dMsgScrnItem_c(u8 param_1, u8 param_2, JKRExpHeap* param_3) { } else { dVar18 = 1.0f; } - field_0x178 = field_0x0e0[0]->width * mpScreen->search('set_it_n')->getWidth() / 48.0f; - field_0x17c = field_0x0e0[0]->height * mpScreen->search('set_it_n')->getHeight() / 48.0f; - field_0x170 = mpScreen->search('set_it_n')->getWidth(); - field_0x174 = mpScreen->search('set_it_n')->getHeight(); + field_0x178 = field_0x0e0[0]->width * mpScreen->search(MULTI_CHAR('set_it_n'))->getWidth() / 48.0f; + field_0x17c = field_0x0e0[0]->height * mpScreen->search(MULTI_CHAR('set_it_n'))->getHeight() / 48.0f; + field_0x170 = mpScreen->search(MULTI_CHAR('set_it_n'))->getWidth(); + field_0x174 = mpScreen->search(MULTI_CHAR('set_it_n'))->getHeight(); for (int i = 0; i < 3; i++) { if (mpItemPane[i] != NULL) { mpItemPane[i]->resize(field_0x178 * dVar18, field_0x17c * dVar18); @@ -166,19 +166,19 @@ dMsgScrnItem_c::dMsgScrnItem_c(u8 param_1, u8 param_2, JKRExpHeap* param_3) { JUT_ASSERT(291, mpBuf != NULL); memset(mpBuf, 0, 0x106a); mCharInfoPtr = (CharInfo_c*)mpBuf; - field_0x160 = mpScreen->search('n_all')->getBounds().i.x; - field_0x164 = mpScreen->search('n_all')->getBounds().i.y; + field_0x160 = mpScreen->search(MULTI_CHAR('n_all'))->getBounds().i.x; + field_0x164 = mpScreen->search(MULTI_CHAR('n_all'))->getBounds().i.y; field_0x180 = 0.0f; field_0x184 = 0.0f; for (int i = 0; i < 3; i++) { field_0x188[i] = g_MsgObject_HIO_c.mBoxPos[i][3]; } field_0x194 = 0.0f; - mpArw_c = new CPaneMgr(mpScreen, 'set_ya_n', 0, NULL); + mpArw_c = new CPaneMgr(mpScreen, MULTI_CHAR('set_ya_n'), 0, NULL); JUT_ASSERT(306, mpArw_c != NULL); - mpMg_c[0] = new CPaneMgr(mpScreen, 'mg_null', 0, NULL); + mpMg_c[0] = new CPaneMgr(mpScreen, MULTI_CHAR('mg_null'), 0, NULL); JUT_ASSERT(309, mpMg_c[0] != NULL); - mpMg_c[1] = new CPaneMgr(mpTxScreen, 'mg_null', 0, NULL); + mpMg_c[1] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_null'), 0, NULL); JUT_ASSERT(312, mpMg_c[1] != NULL); OSInitFastCast(); fukiPosCalc(param_1); @@ -192,55 +192,55 @@ dMsgScrnItem_c::dMsgScrnItem_c(u8 param_1, u8 param_2, JKRExpHeap* param_3) { field_0x12c[1]->searchUpdateMaterialID(mpScreen); field_0x154[1] = 0.0f; field_0x19d = false; - mpPmP_c = new CPaneMgr(mpScreen, 'n_all', 3, NULL); + mpPmP_c = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 3, NULL); JUT_ASSERT(389, mpPmP_c != NULL); mpPmP_c->scale(g_MsgObject_HIO_c.mBoxItemScaleX, g_MsgObject_HIO_c.mBoxItemScaleY); #if VERSION == VERSION_GCN_JPN if (dComIfGs_getOptRuby() == 0) { - mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_3flin', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3flin'), 0, NULL); JUT_ASSERT(407, mpTm_c[0] != NULL); - mpTm_c[1] = new CPaneMgr(mpTxScreen, 't3f_s', 0, NULL); + mpTm_c[1] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3f_s'), 0, NULL); JUT_ASSERT(410, mpTm_c[1] != NULL); - mpTm_c[2] = new CPaneMgr(mpTxScreen, 't3f_w', 0, NULL); + mpTm_c[2] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3f_w'), 0, NULL); JUT_ASSERT(413, mpTm_c[2] != NULL); - mpTmr_c[0] = new CPaneMgr(mpTxScreen, 'mg_3f', 0, NULL); + mpTmr_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3f'), 0, NULL); JUT_ASSERT(416, mpTmr_c[0] != NULL); - mpTmr_c[1] = new CPaneMgr(mpTxScreen, 'mg_3f_s', 0, NULL); + mpTmr_c[1] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3f_s'), 0, NULL); JUT_ASSERT(419, mpTmr_c[1] != NULL); - mpTmr_c[2] = new CPaneMgr(mpTxScreen, 'mg_3f_w', 0, NULL); + mpTmr_c[2] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3f_w'), 0, NULL); JUT_ASSERT(422, mpTmr_c[2] != NULL); - mpTxScreen->search('n_3line')->hide(); - mpTxScreen->search('n_3fline')->show(); - mpTxScreen->search('n_e4line')->hide(); + mpTxScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_3fline'))->show(); + mpTxScreen->search(MULTI_CHAR('n_e4line'))->hide(); } else { - mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_3line', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3line'), 0, NULL); JUT_ASSERT(407, mpTm_c[0] != NULL); mpTm_c[1] = new CPaneMgr(mpTxScreen, 't3_s', 0, NULL); JUT_ASSERT(410, mpTm_c[1] != NULL); mpTm_c[2] = new CPaneMgr(mpTxScreen, 't3_w', 0, NULL); JUT_ASSERT(413, mpTm_c[2] != NULL); - mpTxScreen->search('n_3line')->show(); - mpTxScreen->search('n_3fline')->hide(); - mpTxScreen->search('n_e4line')->hide(); + mpTxScreen->search(MULTI_CHAR('n_3line'))->show(); + mpTxScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_e4line'))->hide(); } #else - mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_e4lin', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_e4lin'), 0, NULL); JUT_ASSERT(407, mpTm_c[0] != NULL); mpTm_c[1] = new CPaneMgr(mpTxScreen, 't4_s', 0, NULL); JUT_ASSERT(410, mpTm_c[1] != NULL); mpTm_c[2] = new CPaneMgr(mpTxScreen, 't4_w', 0, NULL); JUT_ASSERT(413, mpTm_c[2] != NULL); - mpTxScreen->search('n_3line')->hide(); - mpTxScreen->search('n_3fline')->hide(); - mpTxScreen->search('n_e4line')->show(); + mpTxScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_e4line'))->show(); #endif for (int i = 0; i < 3; i++) { @@ -475,10 +475,10 @@ void dMsgScrnItem_c::drawSelf() { texScale = 1.0f; }; - mpItemPane[i]->draw(mpScreen->search('set_it_n')->getGlbBounds().i.x + + mpItemPane[i]->draw(mpScreen->search(MULTI_CHAR('set_it_n'))->getGlbBounds().i.x + 0.5f * (field_0x170 - (field_0x178 * texScale)) + g_MsgObject_HIO_c.mBoxItemPosX, - mpScreen->search('set_it_n')->getGlbBounds().i.y + + mpScreen->search(MULTI_CHAR('set_it_n'))->getGlbBounds().i.y + 0.5f * (field_0x174 - (field_0x17c * texScale)) + g_MsgObject_HIO_c.mBoxItemPosY, field_0x178 * texScale, field_0x17c * texScale, field_0x19e, false, @@ -600,14 +600,14 @@ void dMsgScrnItem_c::fukiPosCalc(u8 param_1) { switch(field_0x19c) { case 1: yOffset = g_MsgObject_HIO_c.mBoxPos[2][3]; - field_0x180 = 105.0f - (mpScreen->search('n_all')->getBounds().i.y + - mpScreen->search('n_all')->getBounds().f.y) / 2; + field_0x180 = 105.0f - (mpScreen->search(MULTI_CHAR('n_all'))->getBounds().i.y + + mpScreen->search(MULTI_CHAR('n_all'))->getBounds().f.y) / 2; mpSelect_c->translate(486.0f, 230.0f); break; case 2: yOffset = g_MsgObject_HIO_c.mBoxPos[1][3]; - field_0x180 = 235.0f - (mpScreen->search('n_all')->getBounds().i.y + - mpScreen->search('n_all')->getBounds().f.y) / 2; + field_0x180 = 235.0f - (mpScreen->search(MULTI_CHAR('n_all'))->getBounds().i.y + + mpScreen->search(MULTI_CHAR('n_all'))->getBounds().f.y) / 2; mpSelect_c->translate(486.0f, 355.0f); break; default: @@ -617,7 +617,7 @@ void dMsgScrnItem_c::fukiPosCalc(u8 param_1) { } field_0x184 = yOffset; setTextBoxPosOffsetY(field_0x180 + yOffset); - mpScreen->search('n_all')->move(field_0x160, yOffset + (field_0x164 + field_0x180)); + mpScreen->search(MULTI_CHAR('n_all'))->move(field_0x160, yOffset + (field_0x164 + field_0x180)); if (mpPmP_c != NULL) { mpPmP_c->reinit(); mpArrow_c->setPos(mpArw_c->getGlobalPosX() + (0.5f * mpArw_c->getSizeX()), @@ -639,8 +639,8 @@ void dMsgScrnItem_c::fukiPosCalc(u8 param_1) { } void dMsgScrnItem_c::setBtk0Animation(J2DAnmTextureSRTKey* param_1) { - mpScreen->search('gold00')->setAnimation(param_1); - mpScreen->search('gold01')->setAnimation(param_1); + mpScreen->search(MULTI_CHAR('gold00'))->setAnimation(param_1); + mpScreen->search(MULTI_CHAR('gold01'))->setAnimation(param_1); } void dMsgScrnItem_c::setBpk0Animation(J2DAnmColor* param_0) { @@ -648,7 +648,7 @@ void dMsgScrnItem_c::setBpk0Animation(J2DAnmColor* param_0) { } void dMsgScrnItem_c::setBpk1Animation(J2DAnmColor* param_0) { - mpScreen->search('moyou_1')->setAnimation(param_0); + mpScreen->search(MULTI_CHAR('moyou_1'))->setAnimation(param_0); } bool dMsgScrnItem_c::isOugiID() { diff --git a/src/d/d_msg_scrn_jimaku.cpp b/src/d/d_msg_scrn_jimaku.cpp index 53d83df320..d76ae68141 100644 --- a/src/d/d_msg_scrn_jimaku.cpp +++ b/src/d/d_msg_scrn_jimaku.cpp @@ -39,7 +39,7 @@ dMsgScrnJimaku_c::dMsgScrnJimaku_c(u8 param_0, JKRExpHeap* i_heap) { memset(mpBuf, 0, 0x106A); mCharInfoPtr = (CharInfo_c*)mpBuf; - mpPmP_c = new CPaneMgr(mpScreen, 'mg_null', 3, NULL); + mpPmP_c = new CPaneMgr(mpScreen, MULTI_CHAR('mg_null'), 3, NULL); JUT_ASSERT(0, mpPmP_c != NULL); mpPmP_c->scale(g_MsgObject_HIO_c.mSubtitleScaleX, g_MsgObject_HIO_c.mSubtitleScaleY); field_0xcc = g_MsgObject_HIO_c.mBoxPos[0][5]; @@ -47,33 +47,33 @@ dMsgScrnJimaku_c::dMsgScrnJimaku_c(u8 param_0, JKRExpHeap* i_heap) { #if VERSION == VERSION_GCN_JPN if (dComIfGs_getOptRuby() == 0) { - mpTm_c[0] = new CPaneMgr(mpScreen, 'mg_3flin', 0, NULL); - mpTm_c[1] = new CPaneMgr(mpScreen, 't3f_s', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpScreen, MULTI_CHAR('mg_3flin'), 0, NULL); + mpTm_c[1] = new CPaneMgr(mpScreen, MULTI_CHAR('t3f_s'), 0, NULL); - mpTmr_c[0] = new CPaneMgr(mpScreen, 'mg_3f', 0, NULL); - mpTmr_c[1] = new CPaneMgr(mpScreen, 'mg_3f_s', 0, NULL); + mpTmr_c[0] = new CPaneMgr(mpScreen, MULTI_CHAR('mg_3f'), 0, NULL); + mpTmr_c[1] = new CPaneMgr(mpScreen, MULTI_CHAR('mg_3f_s'), 0, NULL); - mpScreen->search('n_3line')->hide(); - mpScreen->search('n_3fline')->show(); - mpScreen->search('n_e4line')->hide(); + mpScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpScreen->search(MULTI_CHAR('n_3fline'))->show(); + mpScreen->search(MULTI_CHAR('n_e4line'))->hide(); } else { - mpTm_c[0] = new CPaneMgr(mpScreen, 'mg_3line', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpScreen, MULTI_CHAR('mg_3line'), 0, NULL); mpTm_c[1] = new CPaneMgr(mpScreen, 't3_s', 0, NULL); - mpScreen->search('n_3line')->show(); - mpScreen->search('n_3fline')->hide(); - mpScreen->search('n_e4line')->hide(); + mpScreen->search(MULTI_CHAR('n_3line'))->show(); + mpScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpScreen->search(MULTI_CHAR('n_e4line'))->hide(); } #else - mpTm_c[0] = new CPaneMgr(mpScreen, 'mg_e4lin', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpScreen, MULTI_CHAR('mg_e4lin'), 0, NULL); JUT_ASSERT(0, mpTm_c[0] != NULL); mpTm_c[1] = new CPaneMgr(mpScreen, 't4_s', 0, NULL); JUT_ASSERT(0, mpTm_c[1] != NULL); - mpScreen->search('n_3line')->hide(); - mpScreen->search('n_3fline')->hide(); - mpScreen->search('n_e4line')->show(); + mpScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpScreen->search(MULTI_CHAR('n_e4line'))->show(); #endif for (int i = 0; i < 2; i++) { diff --git a/src/d/d_msg_scrn_kanban.cpp b/src/d/d_msg_scrn_kanban.cpp index 864d533bff..681986c25a 100644 --- a/src/d/d_msg_scrn_kanban.cpp +++ b/src/d/d_msg_scrn_kanban.cpp @@ -39,7 +39,7 @@ dMsgScrnKanban_c::dMsgScrnKanban_c(JKRExpHeap* param_0) { field_0xd0->searchUpdateMaterialID(mpScreen); field_0xd8 = 0.0f; - mpPmP_c = new CPaneMgr(mpScreen, 'n_size', 2, NULL); + mpPmP_c = new CPaneMgr(mpScreen, MULTI_CHAR('n_size'), 2, NULL); JUT_ASSERT(60, mpPmP_c != NULL); mpPmP_c->getPanePtr()->setAnimation(field_0xcc); @@ -48,10 +48,10 @@ dMsgScrnKanban_c::dMsgScrnKanban_c(JKRExpHeap* param_0) { mpPmP_c->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); mpPmP_c->scale(g_MsgObject_HIO_c.mBoxStoneScaleX, g_MsgObject_HIO_c.mBoxStoneScaleY); - mpBack_c = new CPaneMgr(mpScreen, 'back_b', 0, NULL); + mpBack_c = new CPaneMgr(mpScreen, MULTI_CHAR('back_b'), 0, NULL); JUT_ASSERT(68, mpBack_c != NULL); - mpSpot_c = new CPaneMgr(mpScreen, 'spot00', 0, NULL); + mpSpot_c = new CPaneMgr(mpScreen, MULTI_CHAR('spot00'), 0, NULL); JUT_ASSERT(72, mpSpot_c != NULL); mpSpot_c->getPanePtr()->setAnimation(field_0xd0); @@ -59,18 +59,18 @@ dMsgScrnKanban_c::dMsgScrnKanban_c(JKRExpHeap* param_0) { #if VERSION == VERSION_GCN_JPN if (dComIfGs_getOptRuby() != 0) { - static u64 const t_tag[3] = {'mg_3line', 't3_w', 't3_s'}; + static u64 const t_tag[3] = {MULTI_CHAR('mg_3line'), 't3_w', 't3_s'}; for (int i = 0; i < 3; i++) { mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], 0, NULL); ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(mDoExt_getMesgFont()); } - mpScreen->search('n_3line')->show(); - mpScreen->search('n_3fline')->hide(); - mpScreen->search('n_e4line')->hide(); + mpScreen->search(MULTI_CHAR('n_3line'))->show(); + mpScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpScreen->search(MULTI_CHAR('n_e4line'))->hide(); } else { - static u64 const t_tag_2[3] = {'t3fline', 't3f_w', 't3f_s'}; - static u64 const tr_tag[3] = {'mg_3f', 'mg_3f_w', 'mg_3f_s'}; + static u64 const t_tag_2[3] = {MULTI_CHAR('t3fline'), MULTI_CHAR('t3f_w'), MULTI_CHAR('t3f_s')}; + static u64 const tr_tag[3] = {MULTI_CHAR('mg_3f'), MULTI_CHAR('mg_3f_w'), MULTI_CHAR('mg_3f_s')}; for (int i = 0; i < 3; i++) { mpTm_c[i] = new CPaneMgr(mpScreen, t_tag_2[i], 0, NULL); @@ -80,12 +80,12 @@ dMsgScrnKanban_c::dMsgScrnKanban_c(JKRExpHeap* param_0) { ((J2DTextBox*)mpTmr_c[i]->getPanePtr())->setFont(mDoExt_getMesgFont()); } - mpScreen->search('n_3line')->hide(); - mpScreen->search('n_3fline')->show(); - mpScreen->search('n_e4line')->hide(); + mpScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpScreen->search(MULTI_CHAR('n_3fline'))->show(); + mpScreen->search(MULTI_CHAR('n_e4line'))->hide(); } #else - static u64 const t_tag[3] = {'mg_e4lin', 'f4_w', 't4_s'}; + static u64 const t_tag[3] = {MULTI_CHAR('mg_e4lin'), 'f4_w', 't4_s'}; for (int i = 0; i < 3; i++) { mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], 0, NULL); @@ -93,9 +93,9 @@ dMsgScrnKanban_c::dMsgScrnKanban_c(JKRExpHeap* param_0) { ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(mDoExt_getMesgFont()); } - mpScreen->search('n_3line')->hide(); - mpScreen->search('n_3fline')->hide(); - mpScreen->search('n_e4line')->show(); + mpScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpScreen->search(MULTI_CHAR('n_e4line'))->show(); #endif ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getFontSize(mFontSize); diff --git a/src/d/d_msg_scrn_light.cpp b/src/d/d_msg_scrn_light.cpp index baa99036b5..55872b72fb 100644 --- a/src/d/d_msg_scrn_light.cpp +++ b/src/d/d_msg_scrn_light.cpp @@ -143,7 +143,7 @@ dMsgScrnLight_c::dMsgScrnLight_c(u8 i_colorType, u8 param_1) { mpBpk->searchUpdateMaterialID(mpScreen); mBpkFrame = 0.0f; - mpParent_c = new CPaneMgr(mpScreen, 'moya00', 0, NULL); + mpParent_c = new CPaneMgr(mpScreen, MULTI_CHAR('moya00'), 0, NULL); JUT_ASSERT(0, mpParent_c != NULL); mpParent_c->getPanePtr()->setAnimation(mpBck); diff --git a/src/d/d_msg_scrn_place.cpp b/src/d/d_msg_scrn_place.cpp index dc2a337f8a..c9c76484c6 100644 --- a/src/d/d_msg_scrn_place.cpp +++ b/src/d/d_msg_scrn_place.cpp @@ -14,7 +14,7 @@ dMsgScrnPlace_c::dMsgScrnPlace_c() { static u64 t_tag[7] = { - 'sfontb0', 'sfontb1', 'sfontb2', 'sfontl0', 'sfontl1', 'sfontl2', 'sfont00', + MULTI_CHAR('sfontb0'), MULTI_CHAR('sfontb1'), MULTI_CHAR('sfontb2'), MULTI_CHAR('sfontl0'), MULTI_CHAR('sfontl1'), MULTI_CHAR('sfontl2'), MULTI_CHAR('sfont00'), }; init(); @@ -35,16 +35,16 @@ dMsgScrnPlace_c::dMsgScrnPlace_c() { #endif dPaneClass_showNullPane(mpScreen); - mpPmP_c = new CPaneMgr(mpScreen, 'n_all', 2, NULL); + mpPmP_c = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 2, NULL); mpPmP_c->scale(g_MsgObject_HIO_c.mStageTitleScaleX, g_MsgObject_HIO_c.mStageTitleScaleY); - mpFontParent = new CPaneMgr(mpScreen, 's_font_n', 0, NULL); + mpFontParent = new CPaneMgr(mpScreen, MULTI_CHAR('s_font_n'), 0, NULL); mpFontParent->scale(g_MsgObject_HIO_c.mStageTitleCharSizeX, g_MsgObject_HIO_c.mStageTitleCharSizeY); mpFontParent->paneTrans(g_MsgObject_HIO_c.mStageTitleCharPosX, g_MsgObject_HIO_c.mStageTitleCharPosY - mScaleX); - mpBaseParent = new CPaneMgr(mpScreen, 'base_n', 2, NULL); + mpBaseParent = new CPaneMgr(mpScreen, MULTI_CHAR('base_n'), 2, NULL); mpBaseParent->scale(g_MsgObject_HIO_c.mStageTitleBaseSizeX, g_MsgObject_HIO_c.mStageTitleBaseSizeY); mpBaseParent->paneTrans(g_MsgObject_HIO_c.mStageTitleBasePosX, diff --git a/src/d/d_msg_scrn_staff.cpp b/src/d/d_msg_scrn_staff.cpp index cbba48b164..d0cd861250 100644 --- a/src/d/d_msg_scrn_staff.cpp +++ b/src/d/d_msg_scrn_staff.cpp @@ -13,7 +13,7 @@ dMsgScrnStaff_c::dMsgScrnStaff_c(u8 unused) { static u64 t_tag[6] = { - 'right_s', 'right', 'center_s', 'center', 'left_s', 'left', + MULTI_CHAR('right_s'), MULTI_CHAR('right'), MULTI_CHAR('center_s'), MULTI_CHAR('center'), MULTI_CHAR('left_s'), 'left', }; init(); @@ -26,8 +26,8 @@ dMsgScrnStaff_c::dMsgScrnStaff_c(u8 unused) { dPaneClass_showNullPane(mpScreen); mpPmP_c = new CPaneMgr(mpScreen, 'ROOT', 2, NULL); - mpScreen->search('left_n')->hide(); - mpScreen->search('right_n')->hide(); + mpScreen->search(MULTI_CHAR('left_n'))->hide(); + mpScreen->search(MULTI_CHAR('right_n'))->hide(); for (int i = 0; i < 6; i++) { mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], NULL, NULL); diff --git a/src/d/d_msg_scrn_talk.cpp b/src/d/d_msg_scrn_talk.cpp index 5324728edc..a95db2b969 100644 --- a/src/d/d_msg_scrn_talk.cpp +++ b/src/d/d_msg_scrn_talk.cpp @@ -77,21 +77,21 @@ dMsgScrnTalk_c::dMsgScrnTalk_c(u8 param_1, u8 param_2, JKRExpHeap* param_3) { field_0xf8[i] = 18.0f - g_MsgObject_HIO_c.mPikariScale; field_0x35c[i] = g_MsgObject_HIO_c.mPikariHaloDelay_spirit; } - field_0xe8 = mpScreen->search('n_all')->getBounds().i.x; - field_0xec = mpScreen->search('n_all')->getBounds().i.y; + field_0xe8 = mpScreen->search(MULTI_CHAR('n_all'))->getBounds().i.x; + field_0xec = mpScreen->search(MULTI_CHAR('n_all'))->getBounds().i.y; field_0xf0 = 0.0f; for (int i = 0; i < 3; i++) { field_0x350[i] = g_MsgObject_HIO_c.mBoxPos[i][0]; } - mpScreen->search('mg_null')->move( - mpScreen->search('mg_null')->getBounds().i.x + g_MsgObject_HIO_c.mTextPosX, - mpScreen->search('mg_null')->getBounds().i.y + g_MsgObject_HIO_c.mTextPosY); - mpArw_c = new CPaneMgr(mpScreen, 'set_ya_n', 0, NULL); + mpScreen->search(MULTI_CHAR('mg_null'))->move( + mpScreen->search(MULTI_CHAR('mg_null'))->getBounds().i.x + g_MsgObject_HIO_c.mTextPosX, + mpScreen->search(MULTI_CHAR('mg_null'))->getBounds().i.y + g_MsgObject_HIO_c.mTextPosY); + mpArw_c = new CPaneMgr(mpScreen, MULTI_CHAR('set_ya_n'), 0, NULL); JUT_ASSERT(147, mpArw_c != NULL); - mpMg_c[0] = new CPaneMgr(mpScreen, 'mg_null', 0, NULL); + mpMg_c[0] = new CPaneMgr(mpScreen, MULTI_CHAR('mg_null'), 0, NULL); JUT_ASSERT(150, mpMg_c[0] != NULL); - mpMg_c[1] = new CPaneMgr(mpTxScreen, 'mg_null', 0, NULL); + mpMg_c[1] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_null'), 0, NULL); JUT_ASSERT(153, mpMg_c[1] != NULL); OSInitFastCast(); @@ -101,69 +101,69 @@ dMsgScrnTalk_c::dMsgScrnTalk_c(u8 param_1, u8 param_2, JKRExpHeap* param_3) { field_0xf4 = -10.0f; #endif fukiPosCalc(param_1); - mpPmP_c = new CPaneMgr(mpScreen, 'n_all', 3, NULL); + mpPmP_c = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 3, NULL); JUT_ASSERT(176, mpPmP_c != NULL); mpPmP_c->scale(g_MsgObject_HIO_c.mBoxTalkScaleX, g_MsgObject_HIO_c.mBoxTalkScaleY); #if VERSION == VERSION_GCN_JPN if (dComIfGs_getOptRuby() == 0) { - mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_3flin', 0, NULL); - mpTm_c[1] = new CPaneMgr(mpTxScreen, 't3f_s', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3flin'), 0, NULL); + mpTm_c[1] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3f_s'), 0, NULL); - mpTmr_c[0] = new CPaneMgr(mpTxScreen, 'mg_3f', 0, NULL); + mpTmr_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3f'), 0, NULL); if (dMsgObject_getMsgObjectClass()->getFukiKind() == 8) { - mpTm_c[2] = new CPaneMgr(mpTxScreen, 't3f_s1', 0, NULL); - mpTm_c[3] = new CPaneMgr(mpTxScreen, 't3f_s2', 0, NULL); - mpTm_c[4] = new CPaneMgr(mpTxScreen, 't3f_s3', 0, NULL); - mpTm_c[5] = new CPaneMgr(mpTxScreen, 't3f_s4', 0, NULL); - mpTmr_c[1] = new CPaneMgr(mpTxScreen, 'mg_3f_s1', 0, NULL); - mpTmr_c[2] = new CPaneMgr(mpTxScreen, 'mg_3f_s2', 0, NULL); + mpTm_c[2] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3f_s1'), 0, NULL); + mpTm_c[3] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3f_s2'), 0, NULL); + mpTm_c[4] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3f_s3'), 0, NULL); + mpTm_c[5] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3f_s4'), 0, NULL); + mpTmr_c[1] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3f_s1'), 0, NULL); + mpTmr_c[2] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3f_s2'), 0, NULL); } else { - mpTmr_c[1] = new CPaneMgr(mpTxScreen, 'mg_3f_s', 0, NULL); + mpTmr_c[1] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3f_s'), 0, NULL); } - mpTxScreen->search('n_3line')->hide(); - mpTxScreen->search('n_3fline')->show(); - mpTxScreen->search('n_e4line')->hide(); + mpTxScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_3fline'))->show(); + mpTxScreen->search(MULTI_CHAR('n_e4line'))->hide(); } else { - mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_3line', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_3line'), 0, NULL); mpTm_c[1] = new CPaneMgr(mpTxScreen, 't3_s', 0, NULL); if (dMsgObject_getMsgObjectClass()->getFukiKind() == 8) { - mpTm_c[2] = new CPaneMgr(mpTxScreen, 't3_s1', 0, NULL); + mpTm_c[2] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3_s1'), 0, NULL); JUT_ASSERT(189, mpTm_c[2] != NULL); - mpTm_c[3] = new CPaneMgr(mpTxScreen, 't3_s2', 0, NULL); + mpTm_c[3] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3_s2'), 0, NULL); JUT_ASSERT(191, mpTm_c[3] != NULL); - mpTm_c[4] = new CPaneMgr(mpTxScreen, 't3_s3', 0, NULL); + mpTm_c[4] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3_s3'), 0, NULL); JUT_ASSERT(193, mpTm_c[4] != NULL); - mpTm_c[5] = new CPaneMgr(mpTxScreen, 't3_s4', 0, NULL); + mpTm_c[5] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t3_s4'), 0, NULL); JUT_ASSERT(193, mpTm_c[5] != NULL); } - mpTxScreen->search('n_3line')->show(); - mpTxScreen->search('n_3fline')->hide(); - mpTxScreen->search('n_e4line')->hide(); + mpTxScreen->search(MULTI_CHAR('n_3line'))->show(); + mpTxScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_e4line'))->hide(); } #else - mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_e4lin', 0, NULL); + mpTm_c[0] = new CPaneMgr(mpTxScreen, MULTI_CHAR('mg_e4lin'), 0, NULL); JUT_ASSERT(182, mpTm_c[0] != NULL); mpTm_c[1] = new CPaneMgr(mpTxScreen, 't4_s', 0, NULL); JUT_ASSERT(185, mpTm_c[1] != NULL); if (dMsgObject_getMsgObjectClass()->getFukiKind() == 8) { - mpTm_c[2] = new CPaneMgr(mpTxScreen, 't4_s1', 0, NULL); + mpTm_c[2] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t4_s1'), 0, NULL); JUT_ASSERT(189, mpTm_c[2] != NULL); - mpTm_c[3] = new CPaneMgr(mpTxScreen, 't4_s2', 0, NULL); + mpTm_c[3] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t4_s2'), 0, NULL); JUT_ASSERT(191, mpTm_c[3] != NULL); - mpTm_c[4] = new CPaneMgr(mpTxScreen, 't4_s3', 0, NULL); + mpTm_c[4] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t4_s3'), 0, NULL); JUT_ASSERT(193, mpTm_c[4] != NULL); - mpTm_c[5] = new CPaneMgr(mpTxScreen, 't4_s4', 0, NULL); + mpTm_c[5] = new CPaneMgr(mpTxScreen, MULTI_CHAR('t4_s4'), 0, NULL); JUT_ASSERT(193, mpTm_c[5] != NULL); } - mpTxScreen->search('n_3line')->hide(); - mpTxScreen->search('n_3fline')->hide(); - mpTxScreen->search('n_e4line')->show(); + mpTxScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpTxScreen->search(MULTI_CHAR('n_e4line'))->show(); #endif for (int i = 0; i < 6; i++) { if (mpTm_c[i] != NULL) { @@ -484,16 +484,16 @@ void dMsgScrnTalk_c::fukiPosCalc(u8 param_1) { switch (field_0x488) { case 1: dVar15 = g_MsgObject_HIO_c.mBoxPos[2][0]; - field_0xf0 = 105.0f - (mpScreen->search('n_all')->getBounds().i.y + - mpScreen->search('n_all')->getBounds().f.y) / 2; + field_0xf0 = 105.0f - (mpScreen->search(MULTI_CHAR('n_all'))->getBounds().i.y + + mpScreen->search(MULTI_CHAR('n_all'))->getBounds().f.y) / 2; if (mpSelect_c != NULL) { mpSelect_c->translate(486.0f, 230.0f); } break; case 2: dVar15 = g_MsgObject_HIO_c.mBoxPos[1][0]; - field_0xf0 = 235.0f - (mpScreen->search('n_all')->getBounds().i.y + - mpScreen->search('n_all')->getBounds().f.y) / 2; + field_0xf0 = 235.0f - (mpScreen->search(MULTI_CHAR('n_all'))->getBounds().i.y + + mpScreen->search(MULTI_CHAR('n_all'))->getBounds().f.y) / 2; if (mpSelect_c != NULL) { mpSelect_c->translate(486.0f, 355.0f); } @@ -508,10 +508,10 @@ void dMsgScrnTalk_c::fukiPosCalc(u8 param_1) { } if (dComIfGp_isHeapLockFlag() == 2 || dComIfGp_isHeapLockFlag() == 3) { setTextBoxPosOffsetY(-190.0f); - mpScreen->search('n_all')->move(field_0xe8, field_0xec - 190.0f); + mpScreen->search(MULTI_CHAR('n_all'))->move(field_0xe8, field_0xec - 190.0f); } else { setTextBoxPosOffsetY(field_0xf0 + dVar15); - mpScreen->search('n_all')->move(field_0xe8, field_0xec + field_0xf0 + dVar15); + mpScreen->search(MULTI_CHAR('n_all'))->move(field_0xe8, field_0xec + field_0xf0 + dVar15); } if (mpPmP_c != NULL) { mpPmP_c->reinit(); diff --git a/src/d/d_msg_scrn_tree.cpp b/src/d/d_msg_scrn_tree.cpp index 6165a62b8f..eb29b1e266 100644 --- a/src/d/d_msg_scrn_tree.cpp +++ b/src/d/d_msg_scrn_tree.cpp @@ -44,36 +44,36 @@ dMsgScrnTree_c::dMsgScrnTree_c(JUTFont* param_0, JKRExpHeap* param_1) { field_0xd4->searchUpdateMaterialID(mpScreen); field_0xe0 = 0.0f; - mpPmP_c = new CPaneMgr(mpScreen, 'n_size', 2, NULL); + mpPmP_c = new CPaneMgr(mpScreen, MULTI_CHAR('n_size'), 2, NULL); mpPmP_c->getPanePtr()->setAnimation(field_0xcc); field_0xcc->setFrame(1.0f); mpPmP_c->getPanePtr()->animationTransform(); mpPmP_c->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); mpPmP_c->scale(g_MsgObject_HIO_c.mBoxWoodScaleX, g_MsgObject_HIO_c.mBoxWoodScaleY); - field_0xc4 = new CPaneMgr(mpScreen, 'back_b', 0, NULL); - field_0xc8 = new CPaneMgr(mpScreen, 'spot00', 0, NULL); + field_0xc4 = new CPaneMgr(mpScreen, MULTI_CHAR('back_b'), 0, NULL); + field_0xc8 = new CPaneMgr(mpScreen, MULTI_CHAR('spot00'), 0, NULL); field_0xc8->getPanePtr()->setAnimation(field_0xd0); - mpScreen->search('white_m')->setAnimation(field_0xd4); + mpScreen->search(MULTI_CHAR('white_m'))->setAnimation(field_0xd4); #if VERSION == VERSION_GCN_JPN if (dComIfGs_getOptRuby() != 0) { for (int i = 0; i < 3; i++) { - static u64 const t_tag[3] = {'mg_3line', 't3_w', 't3_s'}; + static u64 const t_tag[3] = {MULTI_CHAR('mg_3line'), 't3_w', 't3_s'}; mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], 0, NULL); ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(field_0x54); ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setString(0x210, ""); } - mpScreen->search('n_3line')->show(); - mpScreen->search('n_3fline')->hide(); - mpScreen->search('n_e4line')->hide(); + mpScreen->search(MULTI_CHAR('n_3line'))->show(); + mpScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpScreen->search(MULTI_CHAR('n_e4line'))->hide(); } else { for (int i = 0; i < 3; i++) { - static u64 const t_tag[3] = {'t3fline', 't3f_w', 't3f_s'}; - static u64 const tr_tag[3] = {'mg_3f', 'mg_3f_w', 'mg_3f_s'}; + static u64 const t_tag[3] = {MULTI_CHAR('t3fline'), MULTI_CHAR('t3f_w'), MULTI_CHAR('t3f_s')}; + static u64 const tr_tag[3] = {MULTI_CHAR('mg_3f'), MULTI_CHAR('mg_3f_w'), MULTI_CHAR('mg_3f_s')}; mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], 0, NULL); ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(field_0x54); @@ -84,22 +84,22 @@ dMsgScrnTree_c::dMsgScrnTree_c(JUTFont* param_0, JKRExpHeap* param_1) { ((J2DTextBox*)mpTmr_c[i]->getPanePtr())->setString(0x210, ""); } - mpScreen->search('n_3line')->hide(); - mpScreen->search('n_3fline')->show(); - mpScreen->search('n_e4line')->hide(); + mpScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpScreen->search(MULTI_CHAR('n_3fline'))->show(); + mpScreen->search(MULTI_CHAR('n_e4line'))->hide(); } #else for (int i = 0; i < 3; i++) { - static u64 const t_tag[3] = {'mg_e4lin', 'f4_w', 't4_s'}; + static u64 const t_tag[3] = {MULTI_CHAR('mg_e4lin'), 'f4_w', 't4_s'}; mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], 0, NULL); ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(field_0x54); ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setString(0x200, ""); } - mpScreen->search('n_3line')->hide(); - mpScreen->search('n_3fline')->hide(); - mpScreen->search('n_e4line')->show(); + mpScreen->search(MULTI_CHAR('n_3line'))->hide(); + mpScreen->search(MULTI_CHAR('n_3fline'))->hide(); + mpScreen->search(MULTI_CHAR('n_e4line'))->show(); #endif ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getFontSize(mFontSize); diff --git a/src/d/d_name.cpp b/src/d/d_name.cpp index e45a9ee0d1..091ad29232 100644 --- a/src/d/d_name.cpp +++ b/src/d/d_name.cpp @@ -1290,18 +1290,18 @@ void dName_c::screenSet() { 's_00', 's_01', 's_02', 's_03', 's_04', 's_05', 's_06', 's_07', }; static u64 l_cur1TagName[8] = { - 's_0r', 's_01r', 's_02r', 's_03r', 's_04r', 's_05r', 's_06r', 's_07r', + 's_0r', MULTI_CHAR('s_01r'), MULTI_CHAR('s_02r'), MULTI_CHAR('s_03r'), MULTI_CHAR('s_04r'), MULTI_CHAR('s_05r'), MULTI_CHAR('s_06r'), MULTI_CHAR('s_07r'), }; #if REGION_JPN static u64 l_menu_icon_tag[4] = { - 'j_hira_n', - 'j_kata_n', - 'j_eigo_n', - 'j_end_n', + MULTI_CHAR('j_hira_n'), + MULTI_CHAR('j_kata_n'), + MULTI_CHAR('j_eigo_n'), + MULTI_CHAR('j_end_n'), }; static u64 l_menu_tag[5][3] = { - 'm_hira_0', 'm_hira_1', 'm_hira_s', 'm_kata_0', 'm_kata_1', 'm_kata_s', - 'm_eigo_0', 'm_eigo_1', 'm_eigo_s', 'j_end_0', 'j_end_1', 'j_end_s', + MULTI_CHAR('m_hira_0'), MULTI_CHAR('m_hira_1'), MULTI_CHAR('m_hira_s'), MULTI_CHAR('m_kata_0'), MULTI_CHAR('m_kata_1'), MULTI_CHAR('m_kata_s'), + MULTI_CHAR('m_eigo_0'), MULTI_CHAR('m_eigo_1'), MULTI_CHAR('m_eigo_s'), MULTI_CHAR('j_end_0'), MULTI_CHAR('j_end_1'), MULTI_CHAR('j_end_s'), }; static u32 l_menu_msg[4] = { 0x386, @@ -1311,14 +1311,14 @@ void dName_c::screenSet() { }; #else static u64 l_menu_icon_tag[4] = { - 'p_ABC_n', - 'p_abc_n', - 'j_eigo_n', - 'p_end_n', + MULTI_CHAR('p_ABC_n'), + MULTI_CHAR('p_abc_n'), + MULTI_CHAR('j_eigo_n'), + MULTI_CHAR('p_end_n'), }; static u64 l_menu_tag[5][3] = { - 'p_ABC_0', 'p_ABC_1', 'p_ABC_2', 'p_abc_0', 'p_abc_1', 'p_abc_2', - 'm_eigo_0', 'm_eigo_1', 'm_eigo_2', 'p_end_0', 'p_end_1', 'p_end_2', + MULTI_CHAR('p_ABC_0'), MULTI_CHAR('p_ABC_1'), MULTI_CHAR('p_ABC_2'), MULTI_CHAR('p_abc_0'), MULTI_CHAR('p_abc_1'), MULTI_CHAR('p_abc_2'), + MULTI_CHAR('m_eigo_0'), MULTI_CHAR('m_eigo_1'), MULTI_CHAR('m_eigo_2'), MULTI_CHAR('p_end_0'), MULTI_CHAR('p_end_1'), MULTI_CHAR('p_end_2'), }; static u32 l_menu_msg[4] = { 0x38B, @@ -1328,20 +1328,20 @@ void dName_c::screenSet() { }; #endif static u64 l_tagName[65] = { - 'm_00_0', 'm_00_1', 'm_00_2', 'm_00_3', 'm_00_4', 'm_01_0', 'm_01_1', 'm_01_2', 'm_01_3', - 'm_01_4', 'm_02_0', 'm_02_1', 'm_02_2', 'm_02_3', 'm_02_4', 'm03_0', 'm03_1', 'm03_2', - 'm03_3', 'm03_4', 'm_04_0', 'm_04_1', 'm_04_2', 'm_04_3', 'm_04_4', 'm_05_0', 'm_05_1', - 'm_05_2', 'm_05_3', 'm_05_4', 'm_06_0', 'm_06_1', 'm_06_2', 'm_06_3', 'm_06_4', 'm_07_0', - 'm_07_1', 'm_07_2', 'm_07_3', 'm_07_4', 'm_08_0', 'm_08_1', 'm_08_2', 'm_08_3', 'm_08_4', - 'm_09_0', 'm_09_1', 'm_09_2', 'm_09_3', 'm_09_4', 'm_10_0', 'm_10_1', 'm_10_2', 'm_10_3', - 'm_10_4', 'm_11_0', 'm_11_1', 'm_11_2', 'm_11_3', 'm_11_4', 'm12_0', 'm12_1', 'm12_2', - 'm12_3', 'm12_4', + MULTI_CHAR('m_00_0'), MULTI_CHAR('m_00_1'), MULTI_CHAR('m_00_2'), MULTI_CHAR('m_00_3'), MULTI_CHAR('m_00_4'), MULTI_CHAR('m_01_0'), MULTI_CHAR('m_01_1'), MULTI_CHAR('m_01_2'), MULTI_CHAR('m_01_3'), + MULTI_CHAR('m_01_4'), MULTI_CHAR('m_02_0'), MULTI_CHAR('m_02_1'), MULTI_CHAR('m_02_2'), MULTI_CHAR('m_02_3'), MULTI_CHAR('m_02_4'), MULTI_CHAR('m03_0'), MULTI_CHAR('m03_1'), MULTI_CHAR('m03_2'), + MULTI_CHAR('m03_3'), MULTI_CHAR('m03_4'), MULTI_CHAR('m_04_0'), MULTI_CHAR('m_04_1'), MULTI_CHAR('m_04_2'), MULTI_CHAR('m_04_3'), MULTI_CHAR('m_04_4'), MULTI_CHAR('m_05_0'), MULTI_CHAR('m_05_1'), + MULTI_CHAR('m_05_2'), MULTI_CHAR('m_05_3'), MULTI_CHAR('m_05_4'), MULTI_CHAR('m_06_0'), MULTI_CHAR('m_06_1'), MULTI_CHAR('m_06_2'), MULTI_CHAR('m_06_3'), MULTI_CHAR('m_06_4'), MULTI_CHAR('m_07_0'), + MULTI_CHAR('m_07_1'), MULTI_CHAR('m_07_2'), MULTI_CHAR('m_07_3'), MULTI_CHAR('m_07_4'), MULTI_CHAR('m_08_0'), MULTI_CHAR('m_08_1'), MULTI_CHAR('m_08_2'), MULTI_CHAR('m_08_3'), MULTI_CHAR('m_08_4'), + MULTI_CHAR('m_09_0'), MULTI_CHAR('m_09_1'), MULTI_CHAR('m_09_2'), MULTI_CHAR('m_09_3'), MULTI_CHAR('m_09_4'), MULTI_CHAR('m_10_0'), MULTI_CHAR('m_10_1'), MULTI_CHAR('m_10_2'), MULTI_CHAR('m_10_3'), + MULTI_CHAR('m_10_4'), MULTI_CHAR('m_11_0'), MULTI_CHAR('m_11_1'), MULTI_CHAR('m_11_2'), MULTI_CHAR('m_11_3'), MULTI_CHAR('m_11_4'), MULTI_CHAR('m12_0'), MULTI_CHAR('m12_1'), MULTI_CHAR('m12_2'), + MULTI_CHAR('m12_3'), MULTI_CHAR('m12_4'), }; static u64 l_nameTagName[8] = { - 'name_00', 'name_01', 'name_02', 'name_03', 'name_04', 'name_05', 'name_06', 'name_07', + MULTI_CHAR('name_00'), MULTI_CHAR('name_01'), MULTI_CHAR('name_02'), MULTI_CHAR('name_03'), MULTI_CHAR('name_04'), MULTI_CHAR('name_05'), MULTI_CHAR('name_06'), MULTI_CHAR('name_07'), }; static u64 l_nameCurTagName[8] = { - 's__n_00', 's__n_01', 's__n_02', 's__n_03', 's__n_04', 's__n_05', 's__n_06', 's__n_07', + MULTI_CHAR('s__n_00'), MULTI_CHAR('s__n_01'), MULTI_CHAR('s__n_02'), MULTI_CHAR('s__n_03'), MULTI_CHAR('s__n_04'), MULTI_CHAR('s__n_05'), MULTI_CHAR('s__n_06'), MULTI_CHAR('s__n_07'), }; nameIn.NameInScr = new J2DScreen(); @@ -1350,7 +1350,7 @@ void dName_c::screenSet() { archive = dComIfGp_getNameResArchive(); nameIn.NameInScr->setPriority("zelda_player_name.blo", 0x100000, archive); dPaneClass_showNullPane(nameIn.NameInScr); - nameIn.field_0x10 = nameIn.NameInScr->search('name_n'); + nameIn.field_0x10 = nameIn.NameInScr->search(MULTI_CHAR('name_n')); void* bpk = JKRGetNameResource("zelda_player_name.bpk", archive); JUT_ASSERT(0, bpk != NULL); @@ -1375,22 +1375,22 @@ void dName_c::screenSet() { } #if REGION_JPN - nameIn.NameInScr->search('pal_n')->hide(); - mMenuPane = nameIn.NameInScr->search('jpn_n'); + nameIn.NameInScr->search(MULTI_CHAR('pal_n'))->hide(); + mMenuPane = nameIn.NameInScr->search(MULTI_CHAR('jpn_n')); mMenuPane->show(); - nameIn.NameInScr->search('p_ABC_n')->scale(0.0f, 0.0f); - nameIn.NameInScr->search('p_abc_n')->scale(0.0f, 0.0f); - nameIn.NameInScr->search('p_end_n')->scale(0.0f, 0.0f); + nameIn.NameInScr->search(MULTI_CHAR('p_ABC_n'))->scale(0.0f, 0.0f); + nameIn.NameInScr->search(MULTI_CHAR('p_abc_n'))->scale(0.0f, 0.0f); + nameIn.NameInScr->search(MULTI_CHAR('p_end_n'))->scale(0.0f, 0.0f); #else - nameIn.NameInScr->search('jpn_n')->hide(); - mMenuPane = nameIn.NameInScr->search('pal_n'); + nameIn.NameInScr->search(MULTI_CHAR('jpn_n'))->hide(); + mMenuPane = nameIn.NameInScr->search(MULTI_CHAR('pal_n')); mMenuPane->show(); - nameIn.NameInScr->search('j_hira_n')->scale(0.0f, 0.0f); - nameIn.NameInScr->search('j_kata_n')->scale(0.0f, 0.0f); - nameIn.NameInScr->search('j_eigo_n')->scale(0.0f, 0.0f); - nameIn.NameInScr->search('j_end_n')->scale(0.0f, 0.0f); + nameIn.NameInScr->search(MULTI_CHAR('j_hira_n'))->scale(0.0f, 0.0f); + nameIn.NameInScr->search(MULTI_CHAR('j_kata_n'))->scale(0.0f, 0.0f); + nameIn.NameInScr->search(MULTI_CHAR('j_eigo_n'))->scale(0.0f, 0.0f); + nameIn.NameInScr->search(MULTI_CHAR('j_end_n'))->scale(0.0f, 0.0f); #endif J2DTextBox* menuPane[3]; @@ -1425,7 +1425,7 @@ void dName_c::screenSet() { mMenuIcon[0]->hide(); mMenuIcon[1]->hide(); #endif - mMojiPane = nameIn.NameInScr->search('moji_n'); + mMojiPane = nameIn.NameInScr->search(MULTI_CHAR('moji_n')); for (u32 i = 0; i < 65; i++) { mMojiIcon[i] = new CPaneMgr(nameIn.NameInScr, l_tagName[i], 2, NULL); diff --git a/src/d/d_s_logo.cpp b/src/d/d_s_logo.cpp index e905222717..0291ac5463 100644 --- a/src/d/d_s_logo.cpp +++ b/src/d/d_s_logo.cpp @@ -3,6 +3,8 @@ * Game Boot Logo's Display */ +#include + #include "d/dolzel.h" // IWYU pragma: keep #include "d/d_s_logo.h" @@ -105,8 +107,14 @@ void dScnLogo_c::checkProgSelect() { } int dScnLogo_c::draw() { + static int sDrawLogCount = 0; + if (sDrawLogCount < 10) { + printf("[DIAG] dScnLogo_c::draw: mExecCommand=%d mTimer=%d\n", mExecCommand, mTimer); + fflush(stdout); + } cLib_calcTimer(&mTimer); (this->*l_execFunc[mExecCommand])(); + sDrawLogCount++; return 1; } @@ -589,11 +597,21 @@ static int resLoad(request_of_phase_process_class* i_phase, dScnLogo_c* i_this) } int dScnLogo_c::create() { + static bool sDiagLogged = false; + if (!sDiagLogged) { + printf("[DIAG] dScnLogo_c::create START\n"); fflush(stdout); + } int phase_state = resLoad(&field_0x1c4, this); + if (!sDiagLogged) { + printf("[DIAG] dScnLogo_c::create resLoad=%d (need %d for complete)\n", phase_state, cPhs_COMPLEATE_e); fflush(stdout); + sDiagLogged = true; + } if (phase_state != cPhs_COMPLEATE_e) { return phase_state; } + printf("[DIAG] dScnLogo_c::create resLoad COMPLETE, continuing init...\n"); fflush(stdout); + #if PLATFORM_WII data_8053a730 = 1; #endif @@ -853,6 +871,7 @@ void dScnLogo_c::dvdDataLoad() { } static int dScnLogo_Create(scene_class* i_this) { + printf("[DIAG] dScnLogo_Create: entry i_this=%p\n", i_this); fflush(stdout); return (new (i_this) dScnLogo_c())->create(); } diff --git a/src/d/d_s_name.cpp b/src/d/d_s_name.cpp index 6ba2f9247b..a59d7d2d06 100644 --- a/src/d/d_s_name.cpp +++ b/src/d/d_s_name.cpp @@ -96,8 +96,8 @@ s32 dScnName_c::create() { dDlst_window_c* window = dComIfGp_getWindow(0); dComIfGp_setCamera(0, (camera_class*)&mCamera); - mCamera.near = 1.0f; - mCamera.far = 100000.0f; + mCamera.near_ = 1.0f; + mCamera.far_ = 100000.0f; mCamera.fovy = 45.0f; mCamera.aspect = mDoGph_gInf_c::getWidthF() / mDoGph_gInf_c::getHeightF(); mCamera.lookat.eye.set(0.0f, 0.0f, -1000.0f); @@ -139,8 +139,8 @@ static const char* dummyString(int i) { #endif void dScnName_c::setView() { - C_MTXPerspective(mCamera.projMtx, mCamera.fovy, mCamera.aspect, mCamera.near, - mCamera.far); + C_MTXPerspective(mCamera.projMtx, mCamera.fovy, mCamera.aspect, mCamera.near_, + mCamera.far_); mDoMtx_lookAt(mCamera.viewMtx, &mCamera.lookat.eye, &mCamera.lookat.center, mCamera.bank); MTXInverse(mCamera.viewMtx, mCamera.invViewMtx); diff --git a/src/d/d_select_cursor.cpp b/src/d/d_select_cursor.cpp index c2fc86ab0d..cd2a5c0af2 100644 --- a/src/d/d_select_cursor.cpp +++ b/src/d/d_select_cursor.cpp @@ -100,12 +100,12 @@ dSelect_cursor_c::dSelect_cursor_c(u8 param_0, f32 param_1, JKRArchive* param_2) } switch(mNameIdx) { - case 0: - mpPaneMgr = new CPaneMgr(mpScreen, 'n_all', 2, NULL); + case 0: { + mpPaneMgr = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 2, NULL); mpPaneMgr->hide(); mpPaneMgr->setAlpha(0); - static u64 const corner_tag[4] = {'l_u_null', 'l_d_null', 'r_u_null', 'r_d_null'}; + static u64 const corner_tag[4] = {MULTI_CHAR('l_u_null'), MULTI_CHAR('l_d_null'), MULTI_CHAR('r_u_null'), MULTI_CHAR('r_d_null')}; for (int i = 0; i< 4; i++) { field_0x1C[i] = new CPaneMgr(mpScreen, corner_tag[i], 0, NULL); field_0x94[i] = mpScreen->search(corner_tag[i])->getTranslateX(); @@ -117,15 +117,15 @@ dSelect_cursor_c::dSelect_cursor_c(u8 param_0, f32 param_1, JKRArchive* param_2) mpPaneMgr->scale(param_1, param_1); field_0x14 = NULL; field_0x18 = NULL; - break; + } break; case 1: - mpPaneMgr = new CPaneMgr(mpScreen, 'n_all', 2, NULL); + mpPaneMgr = new CPaneMgr(mpScreen, MULTI_CHAR('n_all'), 2, NULL); mpPaneMgr->hide(); mpPaneMgr->setAlpha(0); mpPaneMgr->scale(param_1, param_1); - field_0x14 = new CPaneMgr(mpScreen, 'sel_po00', 0, NULL); + field_0x14 = new CPaneMgr(mpScreen, MULTI_CHAR('sel_po00'), 0, NULL); field_0x14->hide(); - field_0x18 = new CPaneMgr(mpScreen, 'n_all2', 2, NULL); + field_0x18 = new CPaneMgr(mpScreen, MULTI_CHAR('n_all2'), 2, NULL); break; case 2: mpPaneMgr = new CPaneMgr(mpScreen, 'Null', 2, NULL); @@ -136,7 +136,7 @@ dSelect_cursor_c::dSelect_cursor_c(u8 param_0, f32 param_1, JKRArchive* param_2) field_0x18 = NULL; break; case 3: - mpPaneMgr = new CPaneMgr(mpScreen, 'batsu', 2, NULL); + mpPaneMgr = new CPaneMgr(mpScreen, MULTI_CHAR('batsu'), 2, NULL); mpPaneMgr->hide(); mpPaneMgr->setAlpha(0); mpPaneMgr->scale(param_1, param_1); @@ -180,8 +180,8 @@ dSelect_cursor_c::dSelect_cursor_c(u8 param_0, f32 param_1, JKRArchive* param_2) field_0x40 = 0.0f; switch(mNameIdx) { case 1: - field_0x50 = mpScreen->search('ssel_ico')->getTranslateX(); - field_0x54 = mpScreen->search('ssel_ico')->getTranslateY(); + field_0x50 = mpScreen->search(MULTI_CHAR('ssel_ico'))->getTranslateX(); + field_0x54 = mpScreen->search(MULTI_CHAR('ssel_ico'))->getTranslateY(); break; case 0: case 2: @@ -394,8 +394,8 @@ void dSelect_cursor_c::setScale(f32 i_scale) { switch (mNameIdx) { case 1: - field_0x50 = mpScreen->search('ssel_ico')->getTranslateX(); - field_0x54 = mpScreen->search('ssel_ico')->getTranslateY(); + field_0x50 = mpScreen->search(MULTI_CHAR('ssel_ico'))->getTranslateX(); + field_0x54 = mpScreen->search(MULTI_CHAR('ssel_ico'))->getTranslateY(); break; case 0: case 2: @@ -466,14 +466,14 @@ void dSelect_cursor_c::setBpkAnimation(J2DAnmColor* param_0) { break; } case 2: - mpScreen->search('light')->setAnimation(param_0); - mpScreen->search('back_l')->setAnimation(param_0); + mpScreen->search(MULTI_CHAR('light'))->setAnimation(param_0); + mpScreen->search(MULTI_CHAR('back_l'))->setAnimation(param_0); break; case 3: - mpScreen->search('batsu')->setAnimation(param_0); + mpScreen->search(MULTI_CHAR('batsu'))->setAnimation(param_0); break; default: - mpScreen->search('light00')->setAnimation(param_0); + mpScreen->search(MULTI_CHAR('light00'))->setAnimation(param_0); break; } } @@ -482,7 +482,7 @@ void dSelect_cursor_c::setBtk0Animation(J2DAnmTextureSRTKey* param_0) { switch (mNameIdx) { case 0: { static u64 const tag_4197[8] = { - 'i_c_ld1', 'i_c_ld2', 'i_c_lu1', 'i_c_lu2', 'i_c_rd1', 'i_c_rd2', 'i_c_ru1', 'i_c_ru2', + MULTI_CHAR('i_c_ld1'), MULTI_CHAR('i_c_ld2'), MULTI_CHAR('i_c_lu1'), MULTI_CHAR('i_c_lu2'), MULTI_CHAR('i_c_rd1'), MULTI_CHAR('i_c_rd2'), MULTI_CHAR('i_c_ru1'), MULTI_CHAR('i_c_ru2'), }; for (int i = 0; i < 8; i++) { mpScreen->search(tag_4197[i])->setAnimation(param_0); @@ -490,14 +490,14 @@ void dSelect_cursor_c::setBtk0Animation(J2DAnmTextureSRTKey* param_0) { break; } case 1: { - static u64 const tag_4204[2] = {'gold01', 'gold02'}; + static u64 const tag_4204[2] = {MULTI_CHAR('gold01'), MULTI_CHAR('gold02')}; for (int i = 0; i < 2; i++) { mpScreen->search(tag_4204[i])->setAnimation(param_0); } break; } default: - mpScreen->search('gold01')->setAnimation(param_0); + mpScreen->search(MULTI_CHAR('gold01'))->setAnimation(param_0); break; } } @@ -526,15 +526,15 @@ void dSelect_cursor_c::setCursorAnimation() { field_0x84[i] = mParam2 * (field_0xa4[i] * ((1.0f - param3) + fVar2 * param3)); } - moveCenter(mpScreen->search('l_u_null'), field_0x74[0], field_0x84[0]); - moveCenter(mpScreen->search('l_d_null'), field_0x74[1], field_0x84[1]); - moveCenter(mpScreen->search('r_u_null'), field_0x74[2], field_0x84[2]); - moveCenter(mpScreen->search('r_d_null'), field_0x74[3], field_0x84[3]); + moveCenter(mpScreen->search(MULTI_CHAR('l_u_null')), field_0x74[0], field_0x84[0]); + moveCenter(mpScreen->search(MULTI_CHAR('l_d_null')), field_0x74[1], field_0x84[1]); + moveCenter(mpScreen->search(MULTI_CHAR('r_u_null')), field_0x74[2], field_0x84[2]); + moveCenter(mpScreen->search(MULTI_CHAR('r_d_null')), field_0x74[3], field_0x84[3]); } void dSelect_cursor_c::setBckAnimation(J2DAnmTransformKey* param_0) { - mpScreen->search('ssel_ico')->setAnimation((J2DAnmTransform*)param_0); + mpScreen->search(MULTI_CHAR('ssel_ico'))->setAnimation((J2DAnmTransform*)param_0); } void dSelect_cursor_c::moveCenter(J2DPane* i_pane, f32 i_x, f32 i_y) { diff --git a/src/d/d_timer.cpp b/src/d/d_timer.cpp index 4bb87da478..df66f37589 100644 --- a/src/d/d_timer.cpp +++ b/src/d/d_timer.cpp @@ -602,17 +602,17 @@ void dDlst_TimerScrnDraw_c::setScreen(s32 param_0, JKRArchive* i_archive) { mpGetInBck = (J2DAnmTransform*)J2DAnmLoaderDataBase::load( JKRGetNameResource("zelda_game_image_cow_get_in.bck", mpArchive)); - mpGetInParent = new CPaneMgr(mpGetInScreen, 'get_in_n', 2, NULL); + mpGetInParent = new CPaneMgr(mpGetInScreen, MULTI_CHAR('get_in_n'), 2, NULL); JUT_ASSERT(0, mpGetInParent != NULL); - mpGetInRoot = new CPaneMgr(mpGetInScreen, 'n_all', 0, NULL); + mpGetInRoot = new CPaneMgr(mpGetInScreen, MULTI_CHAR('n_all'), 0, NULL); JUT_ASSERT(0, mpGetInRoot != NULL); - mpGetInText = new CPaneMgr(mpGetInScreen, 'get_in', 0, NULL); + mpGetInText = new CPaneMgr(mpGetInScreen, MULTI_CHAR('get_in'), 0, NULL); JUT_ASSERT(0, mpGetInText != NULL); - static_cast(mpGetInScreen->search('get_in_s'))->setFont(mDoExt_getMesgFont()); - static_cast(mpGetInScreen->search('get_in'))->setFont(mDoExt_getMesgFont()); + static_cast(mpGetInScreen->search(MULTI_CHAR('get_in_s')))->setFont(mDoExt_getMesgFont()); + static_cast(mpGetInScreen->search(MULTI_CHAR('get_in')))->setFont(mDoExt_getMesgFont()); for (int i = 0; i < 51; i++) { m_getin_info[i].bck_frame = 0.0f; @@ -639,40 +639,40 @@ void dDlst_TimerScrnDraw_c::setScreenBase() { mpParent = NULL; - mpCowParent = new CPaneMgr(mpScreen, 'cow_n', 2, NULL); + mpCowParent = new CPaneMgr(mpScreen, MULTI_CHAR('cow_n'), 2, NULL); JUT_ASSERT(0, mpCowParent != NULL); mpCowParent->setAlphaRate(0.0f); - mpTimeParent = new CPaneMgr(mpScreen, 'time_n', 2, NULL); + mpTimeParent = new CPaneMgr(mpScreen, MULTI_CHAR('time_n'), 2, NULL); JUT_ASSERT(0, mpTimeParent != NULL); mpTimeParent->setAlphaRate(0.0f); - mpImageParent = new CPaneMgr(mpScreen, 'cow_i_n', 2, NULL); + mpImageParent = new CPaneMgr(mpScreen, MULTI_CHAR('cow_i_n'), 2, NULL); JUT_ASSERT(0, mpImageParent != NULL); mpImageParent->setAlphaRate(0.0f); - field_0x5c[0][0] = mpScreen->search('c_n_2'); - field_0x5c[0][1] = mpScreen->search('c_n_2_s'); - field_0x5c[1][0] = mpScreen->search('c_n_1'); - field_0x5c[1][1] = mpScreen->search('c_n_1_s'); + field_0x5c[0][0] = mpScreen->search(MULTI_CHAR('c_n_2')); + field_0x5c[0][1] = mpScreen->search(MULTI_CHAR('c_n_2_s')); + field_0x5c[1][0] = mpScreen->search(MULTI_CHAR('c_n_1')); + field_0x5c[1][1] = mpScreen->search(MULTI_CHAR('c_n_1_s')); - field_0x6c[0] = static_cast(mpScreen->search('c_n_4')); - field_0x6c[1] = static_cast(mpScreen->search('c_n_4_s')); - field_0x74[0] = static_cast(mpScreen->search('c_n_3')); - field_0x74[1] = static_cast(mpScreen->search('c_n_3_s')); + field_0x6c[0] = static_cast(mpScreen->search(MULTI_CHAR('c_n_4'))); + field_0x6c[1] = static_cast(mpScreen->search(MULTI_CHAR('c_n_4_s'))); + field_0x74[0] = static_cast(mpScreen->search(MULTI_CHAR('c_n_3'))); + field_0x74[1] = static_cast(mpScreen->search(MULTI_CHAR('c_n_3_s'))); - mTimerText[0][0] = mpScreen->search('t_n_6'); - mTimerText[0][1] = mpScreen->search('t_n_6_s'); - mTimerText[1][0] = mpScreen->search('t_n_5'); - mTimerText[1][1] = mpScreen->search('t_n_5_s'); - mTimerText[2][0] = mpScreen->search('t_n_4'); - mTimerText[2][1] = mpScreen->search('t_n_4_s'); - mTimerText[3][0] = mpScreen->search('t_n_3'); - mTimerText[3][1] = mpScreen->search('t_n_3_s'); - mTimerText[4][0] = mpScreen->search('t_n_2'); - mTimerText[4][1] = mpScreen->search('t_n_2_s'); - mTimerText[5][0] = mpScreen->search('t_n_1'); - mTimerText[5][1] = mpScreen->search('t_n_1_s'); + mTimerText[0][0] = mpScreen->search(MULTI_CHAR('t_n_6')); + mTimerText[0][1] = mpScreen->search(MULTI_CHAR('t_n_6_s')); + mTimerText[1][0] = mpScreen->search(MULTI_CHAR('t_n_5')); + mTimerText[1][1] = mpScreen->search(MULTI_CHAR('t_n_5_s')); + mTimerText[2][0] = mpScreen->search(MULTI_CHAR('t_n_4')); + mTimerText[2][1] = mpScreen->search(MULTI_CHAR('t_n_4_s')); + mTimerText[3][0] = mpScreen->search(MULTI_CHAR('t_n_3')); + mTimerText[3][1] = mpScreen->search(MULTI_CHAR('t_n_3_s')); + mTimerText[4][0] = mpScreen->search(MULTI_CHAR('t_n_2')); + mTimerText[4][1] = mpScreen->search(MULTI_CHAR('t_n_2_s')); + mTimerText[5][0] = mpScreen->search(MULTI_CHAR('t_n_1')); + mTimerText[5][1] = mpScreen->search(MULTI_CHAR('t_n_1_s')); } void dDlst_TimerScrnDraw_c::setScreenBoatRace() { @@ -683,21 +683,21 @@ void dDlst_TimerScrnDraw_c::setScreenBoatRace() { JUT_ASSERT(0, fg != false); dPaneClass_showNullPane(mpScreen); - mpParent = new CPaneMgr(mpScreen, 'ta_co_n', 2, NULL); + mpParent = new CPaneMgr(mpScreen, MULTI_CHAR('ta_co_n'), 2, NULL); JUT_ASSERT(0, mpParent != NULL); - mpCowParent = new CPaneMgr(mpScreen, 'num_n', 2, NULL); + mpCowParent = new CPaneMgr(mpScreen, MULTI_CHAR('num_n'), 2, NULL); JUT_ASSERT(0, mpCowParent != NULL); mpCowParent->setAlphaRate(0.0f); mpTimeParent = NULL; - mpImageParent = new CPaneMgr(mpScreen, 'target_n', 2, NULL); + mpImageParent = new CPaneMgr(mpScreen, MULTI_CHAR('target_n'), 2, NULL); JUT_ASSERT(0, mpImageParent != NULL); mpImageParent->setAlphaRate(0.0f); - mpScreen->search('w_target')->hide(); - mpScreen->search('target')->show(); + mpScreen->search(MULTI_CHAR('w_target'))->hide(); + mpScreen->search(MULTI_CHAR('target'))->show(); for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { @@ -705,9 +705,9 @@ void dDlst_TimerScrnDraw_c::setScreenBoatRace() { } } - field_0x6c[0] = static_cast(mpScreen->search('num_1')); + field_0x6c[0] = static_cast(mpScreen->search(MULTI_CHAR('num_1'))); field_0x6c[1] = NULL; - field_0x74[0] = static_cast(mpScreen->search('num_0')); + field_0x74[0] = static_cast(mpScreen->search(MULTI_CHAR('num_0'))); field_0x74[1] = NULL; for (int i = 0; i < 6; i++) { @@ -727,25 +727,25 @@ void dDlst_TimerScrnDraw_c::setScreenRider() { mpParent = NULL; - mpCowParent = new CPaneMgr(mpScreen, 'num_n', 2, NULL); + mpCowParent = new CPaneMgr(mpScreen, MULTI_CHAR('num_n'), 2, NULL); JUT_ASSERT(0, mpCowParent != NULL); mpCowParent->setAlphaRate(0.0f); mpTimeParent = NULL; - mpImageParent = new CPaneMgr(mpScreen, 'rid_i_n', 2, NULL); + mpImageParent = new CPaneMgr(mpScreen, MULTI_CHAR('rid_i_n'), 2, NULL); JUT_ASSERT(0, mpImageParent != NULL); mpImageParent->setAlphaRate(0.0f); - field_0x5c[0][0] = mpScreen->search('n_n_2'); - field_0x5c[0][1] = mpScreen->search('n_n_2_s'); - field_0x5c[1][0] = mpScreen->search('n_n_1'); - field_0x5c[1][1] = mpScreen->search('n_n_1_s'); + field_0x5c[0][0] = mpScreen->search(MULTI_CHAR('n_n_2')); + field_0x5c[0][1] = mpScreen->search(MULTI_CHAR('n_n_2_s')); + field_0x5c[1][0] = mpScreen->search(MULTI_CHAR('n_n_1')); + field_0x5c[1][1] = mpScreen->search(MULTI_CHAR('n_n_1_s')); - field_0x6c[0] = static_cast(mpScreen->search('n_n_4')); - field_0x6c[1] = static_cast(mpScreen->search('n_n_4_s')); - field_0x74[0] = static_cast(mpScreen->search('n_n_3')); - field_0x74[1] = static_cast(mpScreen->search('n_n_3_s')); + field_0x6c[0] = static_cast(mpScreen->search(MULTI_CHAR('n_n_4'))); + field_0x6c[1] = static_cast(mpScreen->search(MULTI_CHAR('n_n_4_s'))); + field_0x74[0] = static_cast(mpScreen->search(MULTI_CHAR('n_n_3'))); + field_0x74[1] = static_cast(mpScreen->search(MULTI_CHAR('n_n_3_s'))); for (int i = 0; i < 6; i++) { for (int j = 0; j < 2; j++) { @@ -764,10 +764,10 @@ void dDlst_TimerScrnDraw_c::hideDenominator() { } if (field_0x3C8 == 8) { - mpScreen->search('n_sl_s')->hide(); + mpScreen->search(MULTI_CHAR('n_sl_s'))->hide(); mpScreen->search('n_sl')->hide(); } else { - J2DPane* sl_s = mpScreen->search('c_sl_s'); + J2DPane* sl_s = mpScreen->search(MULTI_CHAR('c_sl_s')); J2DPane* sl = mpScreen->search('c_sl'); if (sl_s != NULL) { @@ -1220,8 +1220,8 @@ BOOL dDlst_TimerScrnDraw_c::closeAnime() { int dDlst_TimerScrnDraw_c::createGetIn(cXyz i_pos) { char string[104]; dMeter2Info_getString(0x3E4, string, NULL); // "GOAT IN!" - strcpy(static_cast(mpGetInScreen->search('get_in_s'))->getStringPtr(), string); - strcpy(static_cast(mpGetInScreen->search('get_in'))->getStringPtr(), string); + strcpy(static_cast(mpGetInScreen->search(MULTI_CHAR('get_in_s')))->getStringPtr(), string); + strcpy(static_cast(mpGetInScreen->search(MULTI_CHAR('get_in')))->getStringPtr(), string); if (mCowID < 50) { m_getin_info[mCowID].bck_frame = 40.0f; @@ -1309,8 +1309,8 @@ int dDlst_TimerScrnDraw_c::createGetIn(cXyz i_pos) { s32 dDlst_TimerScrnDraw_c::createStart(u16 i_messageID) { char string[112]; dMeter2Info_getString(i_messageID, string, NULL); - strcpy(static_cast(mpGetInScreen->search('get_in_s'))->getStringPtr(), string); - strcpy(static_cast(mpGetInScreen->search('get_in'))->getStringPtr(), string); + strcpy(static_cast(mpGetInScreen->search(MULTI_CHAR('get_in_s')))->getStringPtr(), string); + strcpy(static_cast(mpGetInScreen->search(MULTI_CHAR('get_in')))->getStringPtr(), string); if (mCowID == 0) { m_getin_info[mCowID].bck_frame = 40.0f; diff --git a/src/dolphin/gx/GXMisc.c b/src/dolphin/gx/GXMisc.c index 1200461d79..a3bd8c6cfb 100644 --- a/src/dolphin/gx/GXMisc.c +++ b/src/dolphin/gx/GXMisc.c @@ -135,10 +135,16 @@ void GXSetDrawDone(void) { CHECK_GXBEGIN(488, "GXSetDrawDone"); enabled = OSDisableInterrupts(); +#ifdef TARGET_PC + // On PC there is no GX GPU, so draw is always immediately done. + // Without the hardware finish interrupt, GXWaitDrawDone would deadlock. + DrawDone = 1; +#else reg = 0x45000002; GX_WRITE_RAS_REG(reg); GXFlush(); DrawDone = 0; +#endif OSRestoreInterrupts(enabled); } @@ -147,6 +153,12 @@ void GXWaitDrawDone(void) { CHECK_GXBEGIN(534, "GXWaitDrawDone"); +#ifdef TARGET_PC + // On PC there is no GX hardware — draw is always done immediately. + DrawDone = 1; + return; +#endif + enabled = OSDisableInterrupts(); while (!DrawDone) { OSSleepThread(&FinishQueue); @@ -156,6 +168,11 @@ void GXWaitDrawDone(void) { void GXDrawDone(void) { CHECK_GXBEGIN(566, "GXDrawDone"); +#ifdef TARGET_PC + // On PC, no GPU to wait for — return immediately. + DrawDone = 1; + return; +#endif GXSetDrawDone(); GXWaitDrawDone(); } diff --git a/src/dolphin/os/OSContext.cpp b/src/dolphin/os/OSContext.cpp new file mode 100644 index 0000000000..4f54b8b963 --- /dev/null +++ b/src/dolphin/os/OSContext.cpp @@ -0,0 +1,92 @@ +// OSContext.cpp - PC implementation of GameCube OSContext API +// Replaces PowerPC assembly context switching with minimal PC stubs. +// On PC there is no register-level context save/restore; the OS handles +// thread contexts natively via std::thread. + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// --- Current context pointer (per-process, not per-thread) --- +static OSContext* sCurrentContext = nullptr; + +OSContext* OSGetCurrentContext(void) { + return sCurrentContext; +} + +void OSSetCurrentContext(OSContext* context) { + sCurrentContext = context; +} + +void OSClearContext(OSContext* context) { + if (!context) return; + context->mode = 0; + context->state = 0; +} + +void OSInitContext(OSContext* context, u32 pc, u32 newsp) { + if (!context) return; + memset(context, 0, sizeof(OSContext)); + context->srr0 = pc; + context->gpr[1] = newsp; +} + +u32 OSSaveContext(OSContext* context) { + // On PC we don't save PowerPC registers. + // Return 0 = "context was just saved" (as opposed to 1 = "restored from save"). + return 0; +} + +void OSLoadContext(OSContext* context) { + // No-op on PC (no PowerPC register restore) +} + +void OSDumpContext(OSContext* context) { + if (!context) { + OSReport("[PC] OSDumpContext: NULL context\n"); + return; + } + OSReport("[PC] OSDumpContext: context at %p (no register info on PC)\n", context); +} + +void OSFillFPUContext(OSContext* context) { + // No-op on PC (no PowerPC FPU state) +} + +void OSLoadFPUContext(OSContext* fpucontext) { + // No-op on PC +} + +void OSSaveFPUContext(OSContext* fpucontext) { + // No-op on PC +} + +u32 OSGetStackPointer(void) { + // Return approximate stack pointer + volatile u32 dummy; + return (u32)(uintptr_t)&dummy; +} + +u32 OSSwitchStack(u32 newsp) { + // Not meaningful on PC - return current sp + return OSGetStackPointer(); +} + +int OSSwitchFiber(u32 pc, u32 newsp) { + // Not meaningful on PC + OSReport("[PC] OSSwitchFiber: not supported on PC\n"); + return 0; +} + +void __OSContextInit(void) { + // On GC this installs the FPU exception handler. + // On PC nothing to do. +} + +#ifdef __cplusplus +} +#endif diff --git a/src/dolphin/os/OSMutex.cpp b/src/dolphin/os/OSMutex.cpp new file mode 100644 index 0000000000..9ec3197cb1 --- /dev/null +++ b/src/dolphin/os/OSMutex.cpp @@ -0,0 +1,243 @@ +// OSMutex.cpp - PC implementation of GameCube OSMutex/OSCond API +// Uses std::recursive_mutex and std::condition_variable_any behind the +// unchanged GameCube C API. The OSMutex struct layout is preserved so +// game code can read its fields. + +#include +#include + +#include +#include +#include +#include +#include + +// ============================================================================ +// Malloc-based allocator to bypass JKRHeap operator new/delete +// Without this, side-table allocations call operator new -> JKRHeap::alloc +// -> OSLockMutex -> GetMutexData -> operator new ... infinite recursion. +// ============================================================================ + +template +struct MallocAllocator { + using value_type = T; + MallocAllocator() = default; + template MallocAllocator(const MallocAllocator&) noexcept {} + T* allocate(std::size_t n) { + void* p = std::malloc(n * sizeof(T)); + if (!p) throw std::bad_alloc(); + return static_cast(p); + } + void deallocate(T* p, std::size_t) noexcept { std::free(p); } + template bool operator==(const MallocAllocator&) const noexcept { return true; } + template bool operator!=(const MallocAllocator&) const noexcept { return false; } +}; + +template +struct MallocDeleter { + void operator()(T* p) const { + p->~T(); + std::free(p); + } +}; + +template +std::unique_ptr> make_malloc_unique(Args&&... args) { + void* mem = std::malloc(sizeof(T)); + if (!mem) throw std::bad_alloc(); + T* obj = new (mem) T(std::forward(args)...); + return std::unique_ptr>(obj); +} + +// ============================================================================ +// Side-table: native mutex per OSMutex +// ============================================================================ + +struct PCMutexData { + std::recursive_mutex nativeMutex; +}; + +template +using MallocMap = std::unordered_map, std::equal_to, + MallocAllocator>>; + +// Lazy-initialized to avoid DLL static init crashes +static std::mutex& GetMutexMapMutex() { + static std::mutex mtx; + return mtx; +} +static MallocMap>>& GetMutexMap() { + static MallocMap>> map; + return map; +} + +static PCMutexData& GetMutexData(OSMutex* mutex) { + std::lock_guard lock(GetMutexMapMutex()); + auto& map = GetMutexMap(); + auto it = map.find(mutex); + if (it == map.end()) { + auto result = map.emplace(mutex, make_malloc_unique()); + return *result.first->second; + } + return *it->second; +} + +// ============================================================================ +// Side-table: native condition variable per OSCond +// ============================================================================ + +struct PCCondData { + std::condition_variable_any cv; +}; + +// Lazy-initialized to avoid DLL static init crashes +static std::mutex& GetCondMapMutex() { + static std::mutex mtx; + return mtx; +} +static MallocMap>>& GetCondMap() { + static MallocMap>> map; + return map; +} + +static PCCondData& GetCondData(OSCond* cond) { + std::lock_guard lock(GetCondMapMutex()); + auto& map = GetCondMap(); + auto it = map.find(cond); + if (it == map.end()) { + auto result = map.emplace(cond, make_malloc_unique()); + return *result.first->second; + } + return *it->second; +} + +// ============================================================================ +// C API functions +// ============================================================================ + +extern "C" { + +void OSInitMutex(OSMutex* mutex) { + if (!mutex) return; + OSInitThreadQueue(&mutex->queue); + mutex->thread = nullptr; + mutex->count = 0; + + // Create/reset side-table entry + GetMutexData(mutex); +} + +void OSLockMutex(OSMutex* mutex) { + if (!mutex) return; + + PCMutexData& data = GetMutexData(mutex); + data.nativeMutex.lock(); + + // Update GC-visible fields + OSThread* currentThread = OSGetCurrentThread(); + mutex->thread = currentThread; + mutex->count++; +} + +void OSUnlockMutex(OSMutex* mutex) { + if (!mutex) return; + + OSThread* currentThread = OSGetCurrentThread(); + if (mutex->thread != currentThread) return; + + mutex->count--; + if (mutex->count == 0) { + mutex->thread = nullptr; + } + + PCMutexData& data = GetMutexData(mutex); + data.nativeMutex.unlock(); +} + +BOOL OSTryLockMutex(OSMutex* mutex) { + if (!mutex) return FALSE; + + PCMutexData& data = GetMutexData(mutex); + if (data.nativeMutex.try_lock()) { + OSThread* currentThread = OSGetCurrentThread(); + mutex->thread = currentThread; + mutex->count++; + return TRUE; + } + return FALSE; +} + +// ============================================================================ +// Internal: unlock all mutexes held by a thread (called on thread exit) +// ============================================================================ + +void __OSUnlockAllMutex(OSThread* thread) { + // On GC this walks the thread's mutex queue. + // On PC the native mutexes are cleaned up when threads exit. + // Clear the GC-visible queue. + if (!thread) return; + thread->queueMutex.head = nullptr; + thread->queueMutex.tail = nullptr; +} + +int __OSCheckDeadLock(OSThread* thread) { + // Simplified: native OS handles deadlock detection. + return 0; +} + +int __OSCheckMutexes(OSThread* thread) { + return 1; +} + +// ============================================================================ +// Condition Variable API +// ============================================================================ + +void OSInitCond(OSCond* cond) { + if (!cond) return; + OSInitThreadQueue(&cond->queue); + GetCondData(cond); +} + +void OSWaitCond(OSCond* cond, OSMutex* mutex) { + if (!cond || !mutex) return; + + PCCondData& condData = GetCondData(cond); + PCMutexData& mutexData = GetMutexData(mutex); + + // Save and clear the GC mutex state + OSThread* currentThread = OSGetCurrentThread(); + s32 savedCount = mutex->count; + mutex->count = 0; + mutex->thread = nullptr; + + // Unlock the recursive mutex the same number of times it was locked + for (s32 i = 0; i < savedCount; i++) { + mutexData.nativeMutex.unlock(); + } + + // Wait on the condition variable + { + std::unique_lock lock(mutexData.nativeMutex); + condData.cv.wait(lock); + } + + // Re-lock the recursive mutex the same number of times + for (s32 i = 0; i < savedCount; i++) { + mutexData.nativeMutex.lock(); + } + + // Restore GC mutex state + mutex->thread = currentThread; + mutex->count = savedCount; +} + +void OSSignalCond(OSCond* cond) { + if (!cond) return; + PCCondData& condData = GetCondData(cond); + condData.cv.notify_all(); +} + +#ifdef __cplusplus +} +#endif diff --git a/src/dolphin/os/OSThread.cpp b/src/dolphin/os/OSThread.cpp new file mode 100644 index 0000000000..96ef2bcfff --- /dev/null +++ b/src/dolphin/os/OSThread.cpp @@ -0,0 +1,747 @@ +// OSThread.cpp - PC implementation of GameCube OSThread API +// Maps GameCube cooperative threading to native OS threads via std::thread. +// The OSThread struct layout is preserved so game code can read its fields. +// A side-table stores the native std::thread and synchronization primitives. + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// ============================================================================ +// Malloc-based allocator to bypass JKRHeap operator new/delete +// ============================================================================ + +template +struct MallocAllocator { + using value_type = T; + MallocAllocator() = default; + template MallocAllocator(const MallocAllocator&) noexcept {} + T* allocate(std::size_t n) { + void* p = std::malloc(n * sizeof(T)); + if (!p) throw std::bad_alloc(); + return static_cast(p); + } + void deallocate(T* p, std::size_t) noexcept { std::free(p); } + template bool operator==(const MallocAllocator&) const noexcept { return true; } + template bool operator!=(const MallocAllocator&) const noexcept { return false; } +}; + +template +struct MallocDeleter { + void operator()(T* p) const { + p->~T(); + std::free(p); + } +}; + +template +std::unique_ptr> make_malloc_unique(Args&&... args) { + void* mem = std::malloc(sizeof(T)); + if (!mem) throw std::bad_alloc(); + T* obj = new (mem) T(std::forward(args)...); + return std::unique_ptr>(obj); +} + +template +using MallocMap = std::unordered_map, std::equal_to, + MallocAllocator>>; + +// ============================================================================ +// Side-table: native thread data per OSThread +// ============================================================================ + +struct PCThreadData { + std::thread nativeThread; + std::mutex mtx; + std::condition_variable cv; + void* (*func)(void*); + void* param; + bool started = false; + bool suspended = false; +}; + +// Lazy-initialized to avoid DLL static init crashes (used before DllMain completes) +static std::mutex& GetThreadDataMutex() { + static std::mutex mtx; + return mtx; +} +static MallocMap>>& GetThreadDataMap() { + static MallocMap>> map; + return map; +} + +// Side-table for OSThreadQueue -> condition_variable (for OSSleepThread/OSWakeupThread) +static std::mutex& GetQueueCvMutex() { + static std::mutex mtx; + return mtx; +} +static MallocMap>>& GetQueueCvMap() { + static MallocMap>> map; + return map; +} + +static std::condition_variable& GetQueueCV(OSThreadQueue* queue) { + std::lock_guard lock(GetQueueCvMutex()); + auto& map = GetQueueCvMap(); + auto it = map.find(queue); + if (it == map.end()) { + auto result = map.emplace(queue, make_malloc_unique()); + return *result.first->second; + } + return *it->second; +} + +// ============================================================================ +// Thread-local current thread pointer +// ============================================================================ + +static thread_local OSThread* tls_currentThread = nullptr; + +// ============================================================================ +// Global state +// ============================================================================ + +static OSThread sDefaultThread; +static u8 sDefaultStack[64 * 1024]; +static u32 sDefaultStackEnd = OS_THREAD_STACK_MAGIC; + +OSThreadQueue __OSActiveThreadQueue; + +// Global interrupt mutex (coarse-grained lock replacing interrupt disable) +// Lazy-initialized to avoid DLL static init crashes +static std::recursive_mutex& GetInterruptMutex() { + static std::recursive_mutex mtx; + return mtx; +} +static thread_local int sInterruptLockCount = 0; + +// Scheduler suspend count +static std::atomic sSchedulerSuspendCount{0}; + +// Active thread count +static std::atomic sActiveThreadCount{0}; + +// Switch thread callback +static OSSwitchThreadCallback sSwitchThreadCallback = nullptr; + +// ============================================================================ +// Internal helpers +// ============================================================================ + +// Linked list macros for the active thread queue +static void EnqueueActive(OSThread* thread) { + OSThread* prev = __OSActiveThreadQueue.tail; + if (prev == nullptr) { + __OSActiveThreadQueue.head = thread; + } else { + prev->linkActive.next = thread; + } + thread->linkActive.prev = prev; + thread->linkActive.next = nullptr; + __OSActiveThreadQueue.tail = thread; +} + +static void DequeueActive(OSThread* thread) { + OSThread* next = thread->linkActive.next; + OSThread* prev = thread->linkActive.prev; + if (next == nullptr) { + __OSActiveThreadQueue.tail = prev; + } else { + next->linkActive.prev = prev; + } + if (prev == nullptr) { + __OSActiveThreadQueue.head = next; + } else { + prev->linkActive.next = next; + } + thread->linkActive.next = nullptr; + thread->linkActive.prev = nullptr; +} + +// Thread entry wrapper - runs on the new std::thread +static void ThreadEntryWrapper(OSThread* thread, PCThreadData* data) { + // Set thread-local pointer + tls_currentThread = thread; + + // Set context pointers for this thread + OSClearContext(&thread->context); + OSSetCurrentContext(&thread->context); + + thread->state = OS_THREAD_STATE_RUNNING; + + // Call the actual thread function + void* result = data->func(data->param); + + // Thread returned - equivalent to OSExitThread + thread->val = result; + thread->state = OS_THREAD_STATE_MORIBUND; +} + +// ============================================================================ +// C API functions +// ============================================================================ + +extern "C" { + +void __OSThreadInit(void) { + memset(&sDefaultThread, 0, sizeof(OSThread)); + + sDefaultThread.state = OS_THREAD_STATE_RUNNING; + sDefaultThread.attr = OS_THREAD_ATTR_DETACH; + sDefaultThread.priority = 16; + sDefaultThread.base = 16; + sDefaultThread.suspend = 0; + sDefaultThread.val = (void*)(intptr_t)-1; + sDefaultThread.mutex = nullptr; + sDefaultThread.queue = nullptr; + + OSInitThreadQueue(&sDefaultThread.queueJoin); + sDefaultThread.queueMutex.head = sDefaultThread.queueMutex.tail = nullptr; + sDefaultThread.link.next = sDefaultThread.link.prev = nullptr; + sDefaultThread.linkActive.next = sDefaultThread.linkActive.prev = nullptr; + + // Stack pointers (JKRThread reads these) + sDefaultThread.stackBase = sDefaultStack + sizeof(sDefaultStack); + sDefaultThread.stackEnd = &sDefaultStackEnd; + sDefaultStackEnd = OS_THREAD_STACK_MAGIC; + + OSClearContext(&sDefaultThread.context); + + sDefaultThread.error = 0; + sDefaultThread.specific[0] = nullptr; + sDefaultThread.specific[1] = nullptr; + + // Set as current thread for main thread + tls_currentThread = &sDefaultThread; + + // Active queue + OSInitThreadQueue(&__OSActiveThreadQueue); + EnqueueActive(&sDefaultThread); + sActiveThreadCount = 1; + + OSReport("[PC-OSThread] Thread system initialized (multi-threaded mode)\n"); +} + +// ============================================================================ +// Thread Queue +// ============================================================================ + +void OSInitThreadQueue(OSThreadQueue* queue) { + if (queue) { + queue->head = queue->tail = nullptr; + } +} + +// ============================================================================ +// Current Thread +// ============================================================================ + +OSThread* OSGetCurrentThread(void) { + // Lazy-init for main thread if __OSThreadInit hasn't been called yet + if (tls_currentThread == nullptr) { + __OSThreadInit(); + } + return tls_currentThread; +} + +// ============================================================================ +// Thread Creation +// ============================================================================ + +int OSCreateThread(OSThread* thread, void* (*func)(void*), void* param, + void* stack, u32 stackSize, OSPriority priority, u16 attr) { + if (!thread) return 0; + if (priority < OS_PRIORITY_MIN || priority > OS_PRIORITY_MAX) return 0; + + // Ensure thread system is initialized + OSGetCurrentThread(); + + memset(thread, 0, sizeof(OSThread)); + + thread->state = OS_THREAD_STATE_READY; + thread->attr = attr & 1u; + thread->base = priority; + thread->priority = priority; + thread->suspend = 1; // Created suspended (GC behavior) + thread->val = (void*)(intptr_t)-1; + thread->mutex = nullptr; + + OSInitThreadQueue(&thread->queueJoin); + thread->queueMutex.head = thread->queueMutex.tail = nullptr; + thread->link.next = thread->link.prev = nullptr; + thread->linkActive.next = thread->linkActive.prev = nullptr; + + // Stack (stack points to TOP on GameCube) + thread->stackBase = (u8*)stack; + thread->stackEnd = (u32*)((uintptr_t)stack - stackSize); + *thread->stackEnd = OS_THREAD_STACK_MAGIC; + + OSClearContext(&thread->context); + + thread->error = 0; + thread->specific[0] = nullptr; + thread->specific[1] = nullptr; + + // Create side-table entry (but don't start the thread yet) + { + auto data = make_malloc_unique(); + data->func = func; + data->param = param; + + std::lock_guard lock(GetThreadDataMutex()); + GetThreadDataMap()[thread] = std::move(data); + } + + // Add to active queue + EnqueueActive(thread); + sActiveThreadCount++; + + OSReport("[PC-OSThread] Created thread %p (priority=%d, stackSize=%u)\n", + thread, priority, stackSize); + return 1; +} + +// ============================================================================ +// Resume / Suspend +// ============================================================================ +/* +s32 OSResumeThread(OSThread* thread) { + if (!thread) return 0; + + s32 prevSuspend = thread->suspend; + if (thread->suspend > 0) { + thread->suspend--; + } + + if (thread->suspend == 0) { + std::lock_guard lock(GetThreadDataMutex()); + auto it = GetThreadDataMap().find(thread); + if (it != GetThreadDataMap().end()) { + PCThreadData* data = it->second.get(); + if (!data->started) { + // First resume: launch the native thread + data->started = true; + data->suspended = false; + data->nativeThread = std::thread(ThreadEntryWrapper, thread, data); + data->nativeThread.detach(); + OSReport("[PC-OSThread] Started thread %p\n", thread); + } else if (data->suspended) { + // Resume from suspension: signal the CV + data->suspended = false; + data->cv.notify_one(); + } + } + } + + return prevSuspend; +} + +s32 OSSuspendThread(OSThread* thread) { + if (!thread) return 0; + + s32 prevSuspend = thread->suspend; + thread->suspend++; + + if (prevSuspend == 0) { + std::lock_guard lock(GetThreadDataMutex()); + auto it = GetThreadDataMap().find(thread); + if (it != GetThreadDataMap().end()) { + PCThreadData* data = it->second.get(); + if (data->started) { + data->suspended = true; + // The thread must check its suspended flag and wait + } + } + } + + return prevSuspend; +} +*/ + +// ============================================================================ +// Resume / Suspend +// ============================================================================ + +s32 OSResumeThread(OSThread* thread) { + if (!thread) + return 0; + + s32 prevSuspend = thread->suspend; + if (thread->suspend > 0) { + thread->suspend--; + } + + // Only wake up if suspend count drops to 0 + if (thread->suspend == 0) { + PCThreadData* data = nullptr; + + // Lock the global map to safely retrieve our thread data pointer + { + std::lock_guard mapLock(GetThreadDataMutex()); + auto it = GetThreadDataMap().find(thread); + if (it != GetThreadDataMap().end()) { + data = it->second.get(); + } + } + + if (data) { + // Lock the specific thread mutex to safely modify state and notify + std::unique_lock threadLock(data->mtx); + + if (!data->started) { + // First resume: launch the native thread + data->started = true; + data->suspended = false; + + // Unlock before launching to avoid potential deadlocks in thread initialization + threadLock.unlock(); + + data->nativeThread = std::thread(ThreadEntryWrapper, thread, data); + data->nativeThread.detach(); + OSReport("[PC-OSThread] Started thread %p\n", thread); + } else { + // Resume from suspension: signal the condition variable + // IMPORTANT: Set suspended to false BEFORE notifying to pass the wait predicate + data->suspended = false; + data->cv.notify_all(); + } + } + } + + return prevSuspend; +} + +s32 OSSuspendThread(OSThread* thread) { + if (!thread) + return 0; + + s32 prevSuspend = thread->suspend; + thread->suspend++; + + // If transitioning from running (0) to suspended (1) + if (prevSuspend == 0) { + PCThreadData* data = nullptr; + + // Lock the global map to find our thread data + { + std::lock_guard mapLock(GetThreadDataMutex()); + auto it = GetThreadDataMap().find(thread); + if (it != GetThreadDataMap().end()) { + data = it->second.get(); + } + } + + if (data && data->started) { + std::unique_lock threadLock(data->mtx); + data->suspended = true; + + // FIX: If the thread is suspending ITSELF, we must block execution here. + // This replicates the GameCube behavior where OSSuspendThread yields the CPU + // immediately. + if (thread == OSGetCurrentThread()) { + // Block until 'suspended' becomes false (set by OSResumeThread) + // The predicate protects against spurious wakeups. + data->cv.wait(threadLock, [data] { return !data->suspended; }); + } else { + // NOTE: Suspending *other* threads is difficult in C++ std::thread + // without cooperative checkpoints or platform-specific hacks. + // For now, we only set the flag. The target thread would need to check 'suspended' + // periodically. + } + } + } + + return prevSuspend; +} + +// ============================================================================ +// Sleep / Wakeup (thread queue based) +// ============================================================================ + +void OSSleepThread(OSThreadQueue* queue) { + if (!queue) return; + + OSThread* currentThread = OSGetCurrentThread(); + if (!currentThread) return; + + currentThread->state = OS_THREAD_STATE_WAITING; + currentThread->queue = queue; + + // Enqueue into the thread queue + OSThread* prev = queue->tail; + if (prev == nullptr) { + queue->head = currentThread; + } else { + prev->link.next = currentThread; + } + currentThread->link.prev = prev; + currentThread->link.next = nullptr; + queue->tail = currentThread; + + // Wait on the condition variable for this queue + std::condition_variable& cv = GetQueueCV(queue); + std::unique_lock lock(GetQueueCvMutex()); + cv.wait(lock, [currentThread]() { + return currentThread->state != OS_THREAD_STATE_WAITING; + }); +} + +void OSWakeupThread(OSThreadQueue* queue) { + if (!queue) return; + + // Wake all threads in the queue + OSThread* thread = queue->head; + while (thread) { + OSThread* next = thread->link.next; + thread->state = OS_THREAD_STATE_READY; + thread->link.next = nullptr; + thread->link.prev = nullptr; + thread->queue = nullptr; + thread = next; + } + queue->head = queue->tail = nullptr; + + // Notify all waiters + std::condition_variable& cv = GetQueueCV(queue); + cv.notify_all(); +} + +// ============================================================================ +// Exit / Cancel / Detach / Join +// ============================================================================ + +void OSExitThread(void* val) { + OSThread* currentThread = OSGetCurrentThread(); + if (!currentThread) return; + + currentThread->val = val; + + if (currentThread->attr & OS_THREAD_ATTR_DETACH) { + DequeueActive(currentThread); + currentThread->state = 0; + } else { + currentThread->state = OS_THREAD_STATE_MORIBUND; + } + + // Wake anyone waiting to join + OSWakeupThread(¤tThread->queueJoin); + sActiveThreadCount--; +} + +void OSCancelThread(OSThread* thread) { + if (!thread) return; + + if (thread->attr & OS_THREAD_ATTR_DETACH) { + DequeueActive(thread); + thread->state = 0; + } else { + thread->state = OS_THREAD_STATE_MORIBUND; + } + + OSWakeupThread(&thread->queueJoin); + sActiveThreadCount--; +} + +void OSDetachThread(OSThread* thread) { + if (!thread) return; + thread->attr |= OS_THREAD_ATTR_DETACH; + + if (thread->state == OS_THREAD_STATE_MORIBUND) { + DequeueActive(thread); + thread->state = 0; + } + OSWakeupThread(&thread->queueJoin); +} + +int OSJoinThread(OSThread* thread, void* val) { + if (!thread) return 0; + + if (!(thread->attr & OS_THREAD_ATTR_DETACH) && + thread->state != OS_THREAD_STATE_MORIBUND && + thread->queueJoin.head == nullptr) { + OSSleepThread(&thread->queueJoin); + } + + if (thread->state == OS_THREAD_STATE_MORIBUND) { + if (val) { + *(s32*)val = (s32)(intptr_t)thread->val; + } + DequeueActive(thread); + thread->state = 0; + return 1; + } + return 0; +} + +// ============================================================================ +// Yield / Terminated / Active +// ============================================================================ + +void OSYieldThread(void) { + std::this_thread::yield(); +} + +BOOL OSIsThreadSuspended(OSThread* thread) { + return (thread && thread->suspend > 0) ? TRUE : FALSE; +} + +BOOL OSIsThreadTerminated(OSThread* thread) { + if (!thread) return TRUE; + return (thread->state == OS_THREAD_STATE_MORIBUND || thread->state == 0) ? TRUE : FALSE; +} + +s32 OSCheckActiveThreads(void) { + return sActiveThreadCount.load(); +} + +// ============================================================================ +// Priority +// ============================================================================ + +int OSSetThreadPriority(OSThread* thread, OSPriority priority) { + if (!thread) return 0; + if (priority < OS_PRIORITY_MIN || priority > OS_PRIORITY_MAX) return 0; + thread->base = priority; + thread->priority = priority; + return 1; +} + +s32 OSGetThreadPriority(OSThread* thread) { + if (!thread) return 16; + return thread->base; +} + +// ============================================================================ +// Switch Thread Callback +// ============================================================================ + +OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback callback) { + OSSwitchThreadCallback prev = sSwitchThreadCallback; + sSwitchThreadCallback = callback; + return prev; +} + +// ============================================================================ +// Scheduler (atomic counter, no real effect with native OS threads) +// ============================================================================ + +s32 OSDisableScheduler(void) { + return sSchedulerSuspendCount.fetch_add(1); +} + +s32 OSEnableScheduler(void) { + return sSchedulerSuspendCount.fetch_sub(1); +} + +// ============================================================================ +// Interrupts (global recursive mutex for mutual exclusion) +// ============================================================================ + +BOOL OSDisableInterrupts(void) { + GetInterruptMutex().lock(); + sInterruptLockCount++; + return (BOOL)(sInterruptLockCount > 1); // TRUE if was already locked +} + +BOOL OSRestoreInterrupts(BOOL level) { + if (sInterruptLockCount > 0) { + sInterruptLockCount--; + GetInterruptMutex().unlock(); + } + return level; +} + +BOOL OSEnableInterrupts(void) { + if (sInterruptLockCount > 0) { + sInterruptLockCount--; + GetInterruptMutex().unlock(); + } + return FALSE; +} + +// ============================================================================ +// Idle function (stub on PC) +// ============================================================================ + +OSThread* OSSetIdleFunction(OSIdleFunction idleFunction, void* param, void* stack, u32 stackSize) { + return nullptr; +} + +OSThread* OSGetIdleFunction(void) { + return nullptr; +} + +// ============================================================================ +// Thread-specific storage +// ============================================================================ + +void OSSetThreadSpecific(s32 index, void* ptr) { + OSThread* thread = OSGetCurrentThread(); + if (thread && index >= 0 && index < OS_THREAD_SPECIFIC_MAX) { + thread->specific[index] = ptr; + } +} + +void* OSGetThreadSpecific(s32 index) { + OSThread* thread = OSGetCurrentThread(); + if (thread && index >= 0 && index < OS_THREAD_SPECIFIC_MAX) { + return thread->specific[index]; + } + return nullptr; +} + +// ============================================================================ +// Clear stack (minimal implementation) +// ============================================================================ + +void OSClearStack(u8 val) { + // On PC we don't clear the stack - it's managed by the OS +} + +// ============================================================================ +// Internal functions used by OSMutex +// ============================================================================ + +s32 __OSGetEffectivePriority(OSThread* thread) { + // On PC with native threads, priority inversion handling is simplified. + // Just return the base priority. + return thread ? thread->base : 16; +} + +void __OSPromoteThread(OSThread* thread, s32 priority) { + // Simplified: no real priority inheritance on PC + if (thread && priority < thread->priority) { + thread->priority = priority; + } +} + +void __OSReschedule(void) { + // With native OS threads, rescheduling is handled by the OS. + // Nothing to do here. +} + +// ============================================================================ +// Interrupt handler registration (stub) +// ============================================================================ + +__OSInterruptHandler __OSSetInterruptHandler(__OSInterrupt interrupt, + __OSInterruptHandler handler) { + return nullptr; +} + +OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask) { + return 0; +} + +#ifdef __cplusplus +} +#endif diff --git a/src/dusk/J3DTransforms_C.cpp b/src/dusk/J3DTransforms_C.cpp new file mode 100644 index 0000000000..efdd2793cd --- /dev/null +++ b/src/dusk/J3DTransforms_C.cpp @@ -0,0 +1,25 @@ +#include +#include + +// translated to C, should be correct, but not tested. + +void J3DPSMtxArrayConcat(Mtx mA, Mtx mB, Mtx mAB, u32 count) { + for (uint32_t i = 0; i < count; i++) { + const float* b = (const float*)mB[i]; + float* res = (float*)mAB[i]; + + for (int row = 0; row < 3; row++) { + float a0 = mA[row][0]; + float a1 = mA[row][1]; + float a2 = mA[row][2]; + float a3 = mA[row][3]; + + // Standard Matrix Multiply for 3x4 * 3x4 (with implicit 4th row [0,0,0,1]) + res[row * 4 + 0] = a0 * b[0] + a1 * b[4] + a2 * b[8]; + res[row * 4 + 1] = a0 * b[1] + a1 * b[5] + a2 * b[9]; + res[row * 4 + 2] = a0 * b[2] + a1 * b[6] + a2 * b[10]; + // The 4th column includes the translation + res[row * 4 + 3] = a0 * b[3] + a1 * b[7] + a2 * b[11] + a3; + } + } +} diff --git a/src/dusk/asserts.cpp b/src/dusk/asserts.cpp new file mode 100644 index 0000000000..8843970f3a --- /dev/null +++ b/src/dusk/asserts.cpp @@ -0,0 +1,11 @@ +#include +#include + +static_assert(sizeof(u8) == sizeof(uint8_t)); +static_assert(sizeof(s8) == sizeof(int8_t)); +static_assert(sizeof(u16) == sizeof(uint16_t)); +static_assert(sizeof(s16) == sizeof(int16_t)); +static_assert(sizeof(u32) == sizeof(uint32_t)); +static_assert(sizeof(s32) == sizeof(int32_t)); +static_assert(sizeof(u64) == sizeof(uint64_t)); +static_assert(sizeof(s64) == sizeof(int64_t)); diff --git a/src/dusk/dvd_emu.cpp b/src/dusk/dvd_emu.cpp new file mode 100644 index 0000000000..6c886a4372 --- /dev/null +++ b/src/dusk/dvd_emu.cpp @@ -0,0 +1,217 @@ +#include "dusk/dvd_emu.h" +#include +#include +#include +#include +#include "dolphin/os.h" + +#ifdef _WIN32 +#include +#include +#define PATH_SEP '\\' +#else +#include +#include +#define PATH_SEP '/' +#endif + +namespace { +s32 g_nextEntryNum = 1; + +// Lazy-init to avoid crash during DLL static initialization +std::string& g_basePath() { + static std::string instance = "data"; + return instance; +} + +std::unordered_map& getEntryPaths() { + static std::unordered_map instance; + return instance; +} +} // namespace + +namespace DvdEmu { + +void setBasePath(const char* path) { +#ifdef _WIN32 + char exePath[MAX_PATH]; + GetModuleFileNameA(NULL, exePath, MAX_PATH); + + // Get the directory of the .exe + char* lastSlash = strrchr(exePath, '\\'); + if (lastSlash) { + *lastSlash = '\0'; + } + + // exeDir + "/" + path + g_basePath() = exePath; + g_basePath() += PATH_SEP; + g_basePath() += path; +#else + g_basePath() = path; +#endif + + printf("[DvdEmu] Base path set to: %s\n", g_basePath().c_str()); fflush(stdout); +} + +const char* getBasePath() { + return g_basePath().c_str(); +} + +std::string convertPath(const char* gcPath) { + std::string result = g_basePath(); + + // Skip leading slashes + const char* p = gcPath; + while (*p == '/' || *p == '\\') + p++; + + result += PATH_SEP; + + // Append path, converting slashes + while (*p) { + if (*p == '/' || *p == '\\') { + result += PATH_SEP; + } else { + result += *p; + } + p++; + } + + return result; +} + +bool fileExists(const char* gcPath) { + std::string fullPath = convertPath(gcPath); + +#ifdef _WIN32 + DWORD attrib = GetFileAttributesA(fullPath.c_str()); + bool exists = (attrib != INVALID_FILE_ATTRIBUTES && !(attrib & FILE_ATTRIBUTE_DIRECTORY)); +#else + struct stat st; + bool exists = (stat(fullPath.c_str(), &st) == 0 && S_ISREG(st.st_mode)); +#endif + + if (exists) { + printf("[DvdEmu] FOUND: %s\n", gcPath); fflush(stdout); + } else { + printf("[DvdEmu] MISSING: %s\n", gcPath); fflush(stdout); + } + + return exists; +} + +u32 getFileSize(const char* gcPath) { + std::string fullPath = convertPath(gcPath); + FILE* f = fopen(fullPath.c_str(), "rb"); + if (!f) + return 0; + + fseek(f, 0, SEEK_END); + u32 size = (u32)ftell(f); + fclose(f); + return size; +} + +void* loadFile(const char* gcPath, u32* outSize, void* heap) { + std::string fullPath = convertPath(gcPath); + + printf("[DvdEmu] Loading request: '%s'\n", gcPath); fflush(stdout); + + FILE* f = fopen(fullPath.c_str(), "rb"); + if (!f) { + printf("[DvdEmu] ERROR: Failed to open file at physical path: %s\n", fullPath.c_str()); fflush(stdout); + if (outSize) + *outSize = 0; + return nullptr; + } + + fseek(f, 0, SEEK_END); + u32 size = (u32)ftell(f); + fseek(f, 0, SEEK_SET); + + // Allocate with 32-byte alignment (matching GameCube) + void* data; +#ifdef _WIN32 + data = _aligned_malloc(size, 32); +#else + data = aligned_alloc(32, (size + 31) & ~31); +#endif + + if (!data) { + printf("[DvdEmu] FATAL: Failed to allocate %u bytes for %s\n", size, gcPath); fflush(stdout); + fclose(f); + if (outSize) + *outSize = 0; + return nullptr; + } + + u32 bytesRead = (u32)fread(data, 1, size, f); + fclose(f); + + if (bytesRead != size) { + printf("[DvdEmu] WARNING: Read error: expected %u, got %u for %s\n", size, bytesRead, + gcPath); fflush(stdout); + } + + if (outSize) + *outSize = bytesRead; + + printf("[DvdEmu] SUCCESS: Loaded %s (%u bytes)\n", gcPath, bytesRead); fflush(stdout); + return data; +} + +u32 loadFileToBuffer(const char* gcPath, void* buffer, u32 bufferSize, u32 offset) { + std::string fullPath = convertPath(gcPath); + + FILE* f = fopen(fullPath.c_str(), "rb"); + if (!f) { + printf("[DvdEmu] Failed to open file for buffer load: %s\n", fullPath.c_str()); fflush(stdout); + return 0; + } + + if (offset > 0) { + fseek(f, offset, SEEK_SET); + } + + u32 bytesRead = (u32)fread(buffer, 1, bufferSize, f); + fclose(f); + + return bytesRead; +} + +} // namespace DvdEmu + +// Entry-Number System (emulates DVD's entry system) + +s32 DVDConvertPathToEntrynum_Emu(const char* path) { + if (!DvdEmu::fileExists(path)) { + printf("[DVD] Error: File not found for entrynum conversion: %s\n", path); fflush(stdout); + return -1; + } + + // Check if already registered + for (const auto& pair : getEntryPaths()) { + if (pair.second == path) { + return pair.first; + } + } + + // Assign new entry number + s32 entryNum = g_nextEntryNum++; + getEntryPaths()[entryNum] = path; + + return entryNum; +} + +void DVDRegisterPath(s32 entryNum, const char* path) { + getEntryPaths()[entryNum] = path; +} + +const char* DVDGetPathForEntry(s32 entryNum) { + auto it = getEntryPaths().find(entryNum); + if (it != getEntryPaths().end()) { + return it->second.c_str(); + } + return nullptr; +} diff --git a/src/dusk/extras.c b/src/dusk/extras.c index 1dcb6ae49f..a64296eed3 100644 --- a/src/dusk/extras.c +++ b/src/dusk/extras.c @@ -1,6 +1,9 @@ #include "dusk/extras.h" #include +#include +#include +#ifndef _MSC_VER int stricmp(const char* str1, const char* str2) { char a_var; char b_var; @@ -43,3 +46,17 @@ int strnicmp(const char* str1, const char* str2, int n) { return 0; } +#endif + + +void *_memcpy(void* dest, void const* src, int n) { + return memcpy(dest, src, n); +} + +void DCZeroRange(void* addr, uint32_t nBytes) { +#ifdef _MSC_VER + memset(addr, 0, nBytes); +#else + bzero(addr, nBytes); +#endif +} diff --git a/src/dusk/extras.cpp b/src/dusk/extras.cpp new file mode 100644 index 0000000000..de402f028b --- /dev/null +++ b/src/dusk/extras.cpp @@ -0,0 +1,27 @@ +// C++ Mangled version of extras.c +#include +#include +#ifdef _MSC_VER +#include +#endif + +void *__memcpy(void* dest, void const* src, int n) { + return memcpy(dest, src, n); +} + +void __dcbz(void* addr, int offset) { + // Gekko cache lines are 32 bytes. + // dcbz usually requires addr to be 32-byte aligned. + memset((char*)addr + offset, 0, 32); +} + +int __cntlzw(unsigned int val) { + if (val == 0) return 32; // PowerPC returns 32 if the input is 0 +#ifdef _MSC_VER + unsigned long idx; + _BitScanReverse(&idx, val); + return 31 - (int)idx; +#else + return __builtin_clz(val); +#endif +} diff --git a/src/dusk/globals.cpp b/src/dusk/globals.cpp new file mode 100644 index 0000000000..d82a680fcc --- /dev/null +++ b/src/dusk/globals.cpp @@ -0,0 +1,21 @@ +#include +#include +#include +u8 g_printOtherHeapDebug; + +dKankyo_HIO_c g_kankyoHIO; + +dDebugPad_c dDebugPad; + +u32 __OSFpscrEnableBits; + +GDLObj* __GDCurrentDL; + +// DSP +#include +DSPTaskInfo* __DSP_first_task; +DSPTaskInfo* __DSP_curr_task; + +// mDo_dvd +#include +u8 mDoDvdThd::DVDLogoMode; diff --git a/src/dusk/jsystem_stubs.cpp b/src/dusk/jsystem_stubs.cpp new file mode 100644 index 0000000000..54f870ba56 --- /dev/null +++ b/src/dusk/jsystem_stubs.cpp @@ -0,0 +1,136 @@ +/* +#include +#include +*/ +#pragma mark J3DShapeTable +#include "JSystem/J3DGraphAnimator/J3DShapeTable.h" + +// JAISe::JAISeMgr_startID_, JAISeq::JAISeqMgr_startID_, JAIStream::JAIStreamMgr_startID_ +// are compiled from their real source files (JAISe.obj, JAISeq.obj, JAIStream.obj) + +#pragma mark JAUSection +#include "JSystem/JAudio2/JAUSectionHeap.h" + +JAUSoundTable* JAUSection::newSoundTable(void const* data, u32 size, bool flag) { + puts("JAUSection::newSoundTable is a stub"); + return nullptr; +} + +JAUSoundNameTable* JAUSection::newSoundNameTable(void const* data, u32 size, bool flag) { + puts("JAUSection::newSoundNameTable is a stub"); + return nullptr; +} + +#pragma mark JASHeap +#include "JSystem/JAudio2/JASHeapCtrl.h" + +JASHeap::JASHeap(JASDisposer* disposer) + : mTree(this), mDisposer(disposer), mBase(nullptr), mSize(0), field_0x40(nullptr) { + OSInitMutex(&mMutex); +} + +#pragma mark JASVoiceBank +#include "JSystem/JAudio2/JASVoiceBank.h" + +bool JASVoiceBank::getInstParam(int a, int b, int c, JASInstParam* param) const { + puts("JASVoiceBank::getInstParam is a stub"); + return false; +} + +// JASSeqParser::sCallBackFunc is compiled from JASSeqParser.obj +/* +#pragma mark JHICommBuf +#include "JSystem/JHostIO/JHIComm.h" + +void JHICommBufHeader::init() { + puts("JHICommBufHeader::init is a stub"); +} + +int JHICommBufHeader::load() { + puts("JHICommBufHeader::load is a stub"); + return -1; +} + +int JHICommBufReader::readBegin() { + puts("JHICommBufReader::readBegin is a stub"); + return -1; +} + +void JHICommBufReader::readEnd() { + puts("JHICommBufReader::readEnd is a stub"); +} + +int JHICommBufReader::read(void* buf, int size) { + puts("JHICommBufReader::read is a stub"); + return 0; +} + +u32 JHICommBufReader::Header::getReadableSize() const { + puts("JHICommBufReader::Header::getReadableSize is a stub"); + return 0; +} + +int JHICommBufWriter::writeBegin() { + puts("JHICommBufWriter::writeBegin is a stub"); + return -1; +} + +void JHICommBufWriter::writeEnd() { + puts("JHICommBufWriter::writeEnd is a stub"); +} + +int JHICommBufWriter::write(void* buf, int size) { + puts("JHICommBufWriter::write is a stub"); + return 0; +} + +#pragma mark HIO / HIO2 +#include +#include + +extern "C" { + +BOOL HIORead(u32 addr, void* buffer, s32 size) { + puts("HIORead is a stub"); + return FALSE; +} + +BOOL HIOWrite(u32 addr, void* buffer, s32 size) { + puts("HIOWrite is a stub"); + return FALSE; +} + +BOOL HIO2Init(void) { + puts("HIO2Init is a stub"); + return FALSE; +} + +BOOL HIO2EnumDevices(HIO2EnumCallback callback) { + puts("HIO2EnumDevices is a stub"); + return FALSE; +} + +s32 HIO2Open(HIO2DeviceType type, HIO2UnkCallback exiCb, HIO2DisconnectCallback disconnectCb) { + puts("HIO2Open is a stub"); + return -1; +} + +BOOL HIO2Close(s32 handle) { + puts("HIO2Close is a stub"); + return FALSE; +} + +} // extern "C" + +#pragma mark JOR +#include "JSystem/JHostIO/JORServer.h" + +int JOREventCallbackListNode::JORAct(u32 eventID, const char* eventName) { + puts("JOREventCallbackListNode::JORAct is a stub"); + return 0; +} +*/ +#pragma mark J3DPSMtxArrayConcat +void J3DPSMtxArrayConcat(float (*a)[4], float (*b)[4], float (*out)[4], u32 count) { + puts("J3DPSMtxArrayConcat is a stub"); +} diff --git a/src/dusk/main.cpp b/src/dusk/main.cpp index f8475c1e68..4155482488 100644 --- a/src/dusk/main.cpp +++ b/src/dusk/main.cpp @@ -1,5 +1,24 @@ -extern "C" void game_main(int argc, char* argv[]); +#if _WIN32 +#define WINDOWS_LEAN_AND_MEAN +#include +#endif + +int game_main(int argc, char* argv[]); + +void WindowsSetupConsole(); int main(int argc, char* argv[]) { - game_main(argc, argv); + WindowsSetupConsole(); + return game_main(argc, argv); } + +void WindowsSetupConsole() { +#if _WIN32 + SetConsoleOutputCP(CP_UTF8); + + auto stdout = GetStdHandle(STD_OUTPUT_HANDLE); + DWORD consoleMode; + GetConsoleMode(stdout, &consoleMode); + SetConsoleMode(stdout, consoleMode | ENABLE_PROCESSED_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING); +#endif +} \ No newline at end of file diff --git a/src/dusk/stubs.cpp b/src/dusk/stubs.cpp index ee466a699c..f8c84d498a 100644 --- a/src/dusk/stubs.cpp +++ b/src/dusk/stubs.cpp @@ -1,1356 +1,1872 @@ -//#include -#include -#include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include + + +#ifndef _WIN32 +#include +#include +#include +#if __APPLE__ +#include +#endif +#endif + +#ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN +#define NOMINMAX +#include + +#undef IN +#undef OUT +#endif + +#if __APPLE__ +static u64 MachToDolphinNum; +static u64 MachToDolphinDenom; +#elif _WIN32 +static LARGE_INTEGER PerfFrequency; +static bool PerfInitialized = false; +#endif + + + +// ========================================================================== +// General OS +// ========================================================================== + // Credits: Super Monkey Ball -static VIRetraceCallback sVIRetraceCallback = NULL; - -void OSReport(const char *msg, ...) { - va_list args; - va_start(args, msg); - vprintf(msg, args); - va_end(args); -} - -u32 OSGetConsoleType() { return OS_CONSOLE_RETAIL1; } - -u32 OSGetSoundMode() { return 2; } - -s32 CARDCancel(CARDFileInfo *fileInfo) { - puts("CARDCancel is a stub"); - return 0; -} - -s32 CARDCheck(s32 chan) { - puts("CARDCheck is a stub"); - return 0; -} - -s32 CARDCheckAsync(s32 chan, CARDCallback callback) { - puts("CARDCheckAsync is a stub"); - return 0; -} - -s32 CARDClose(CARDFileInfo *fileInfo) { - puts("CARDClose is a stub"); - return 0; -} - -s32 CARDCreate(s32 chan, const char *fileName, u32 size, - CARDFileInfo *fileInfo) { - puts("CARDCreate is a stub"); - return 0; -} - -s32 CARDCreateAsync(s32 chan, const char *fileName, u32 size, - CARDFileInfo *fileInfo, CARDCallback callback) { - puts("CARDCreateAsync is a stub"); - return 0; -} - -s32 CARDDelete(s32 chan, const char *fileName) { - puts("CARDDelete is a stub"); - return 0; -} - -s32 CARDDeleteAsync(s32 chan, const char *fileName, CARDCallback callback) { - puts("CARDDeleteAsync is a stub"); - return 0; -} - -s32 CARDFastDeleteAsync(s32 chan, s32 fileNo, CARDCallback callback) { - puts("CARDFastDeleteAsync is a stub"); - return 0; -} - -s32 CARDFastOpen(s32 chan, s32 fileNo, CARDFileInfo *fileInfo) { - puts("CARDFastOpen is a stub"); - return 0; -} - -s32 CARDFormat(s32 chan) { - puts("CARDFormat is a stub"); - return 0; -} - -s32 CARDFreeBlocks(s32 chan, s32 *byteNotUsed, s32 *filesNotUsed) { - puts("CARDFreeBlocks is a stub"); - return 0; -} - -s32 CARDGetResultCode(s32 chan) { - puts("CARDGetResultCode is a stub"); - return 0; -} - -s32 CARDGetStatus(s32 chan, s32 fileNo, CARDStat *stat) { - puts("CARDGetStatus is a stub"); - return 0; -} - -s32 CARDGetSectorSize(s32 chan, u32 *size) { - puts("CARDGetSectorSize is a stub"); - return 0; -} - -void CARDInit() { puts("CARDInit is a stub"); } - -s32 CARDMount(s32 chan, void *workArea, CARDCallback detachCallback) { - puts("CARDMount is a stub"); - return 0; -} - -s32 CARDMountAsync(s32 chan, void *workArea, CARDCallback detachCallback, - CARDCallback attachCallback) { - puts("CARDMountAsync is a stub"); - return 0; -} - -s32 CARDOpen(s32 chan, const char *fileName, CARDFileInfo *fileInfo) { - puts("CARDOpen is a stub"); - return 0; -} - -s32 CARDProbeEx(s32 chan, s32 *memSize, s32 *sectorSize) { - puts("CARDProbeEx is a stub"); - return 0; -} - -s32 CARDRead(CARDFileInfo *fileInfo, void *addr, s32 length, s32 offset) { - puts("CARDRead is a stub"); - return 0; -} - -s32 CARDReadAsync(CARDFileInfo *fileInfo, void *addr, s32 length, s32 offset, - CARDCallback callback) { - puts("CARDReadAsync is a stub"); - return 0; -} - -s32 CARDRename(s32 chan, const char *oldName, const char *newName) { - puts("CARDRename is a stub"); - return 0; -} - -s32 CARDRenameAsync(s32 chan, const char *oldName, const char *newName, - CARDCallback callback) { - puts("CARDRenameAsync is a stub"); - return 0; -} - -s32 CARDSetStatusAsync(s32 chan, s32 fileNo, CARDStat *stat, - CARDCallback callback) { - puts("CARDSetStatusAsync is a stub"); - return 0; -} - -s32 CARDUnmount(s32 chan) { - puts("CARDUnmount is a stub"); - return 0; -} - -s32 CARDWrite(CARDFileInfo *fileInfo, void *addr, s32 length, - s32 offset) { - puts("CARDWrite is a stub"); - return 0; -} - -s32 CARDWriteAsync(CARDFileInfo *fileInfo, void *addr, s32 length, - s32 offset, CARDCallback callback) { - puts("CARDWriteAsync is a stub"); - return 0; -} - -s32 CARDGetSerialNo(s32 chan, u64 *serialNo) { return 0; } - -s32 CARDSetStatus(s32 chan, s32 fileNo, CARDStat *stat) { return 0; } - -void DCFlushRange(void *addr, u32 nBytes) { - // puts("DCFlushRange is a stub"); -} - -void DCFlushRangeNoSync(void *addr, u32 nBytes) { - // puts("DCFlushRangeNoSync is a stub"); -} - -void DCInvalidateRange(void *addr, u32 nBytes) { - // puts("DCInvalidateRange is a stub"); -} - -void DCStoreRange(void *addr, u32 nBytes) { - // puts("DCStoreRange is a stub"); -} - -void DCStoreRangeNoSync(void *addr, u32 nBytes) { - // puts("DCStoreRangeNoSync is a stub"); -} - -s32 DVDCancel(volatile DVDCommandBlock *block) { - puts("DVDCancel is a stub"); - return 0; -} - -int DVDReadAbsAsyncForBS(DVDCommandBlock *block, void *addr, s32 length, s32 offset, - DVDCBCallback callback) { - puts("DVDReadAbsAsyncForBS is a stub"); - return 0; -} - -int DVDReadDiskID(DVDCommandBlock* block, DVDDiskID* diskID, DVDCBCallback callback) { - puts("DVDReadDiskID is a stub"); - return 0; -} - -void DVDReset() { puts("DVDReset is a stub"); } - -BOOL EXIDeselect(int chan) { - puts("EXIDeselect is a stub"); - return FALSE; -} - -BOOL EXIDma(int chan, void *buffer, s32 size, int d, int e) { - puts("EXIDma is a stub"); - return FALSE; -} - -BOOL EXIImm(int chan, u32 *b, int c, int d, int e) { - puts("EXIImm is a stub"); - return FALSE; -} - -BOOL EXILock(int chan, int b, int c) { - puts("EXILock is a stub"); - return FALSE; -} - -BOOL EXISelect(int chan, int b, int c) { - puts("EXISelect is a stub"); - return FALSE; -} - -BOOL EXISync(int chan) { - puts("EXISync is a stub"); - return FALSE; -} - -BOOL EXIUnlock(int chan) { - puts("EXIUnlock is a stub"); - return FALSE; -} - -void LCEnable() { puts("LCEnable is a stub"); } - -void OSClearContext(OSContext *context) { puts("OSClearContext is a stub"); } - -BOOL OSDisableInterrupts() { - puts("OSDisableInterrupts is a stub"); - return FALSE; -} - -void OSDumpContext(OSContext *context) { puts("OSDumpContext is a stub"); } - -OSThread *OSGetCurrentThread() { - puts("OSGetCurrentThread is a stub"); - return 0; -} - -u16 OSGetFontEncode() { - puts("OSGetFontEncode is a stub"); - return 0; -} - -char *OSGetFontTexture(const char* string, void** image, s32* x, s32* y, s32* width) { - puts("OSGetFontTexture is a stub"); - return 0; -} - -char *OSGetFontWidth(const char* string, s32* width) { - puts("OSGetFontWidth is a stub"); - return 0; -} - -BOOL OSGetResetButtonState() { - puts("OSGetResetButtonState is a stub"); - return FALSE; -} - -u32 OSGetStackPointer() { - puts("OSGetStackPointer is a stub"); - return 0; -} - -BOOL OSInitFont(OSFontHeader *fontData) { - puts("OSInitFont is a stub"); - return FALSE; -} - -BOOL OSLink(OSModuleInfo *newModule, void *bss) { - puts("OSLink is a stub"); - return TRUE; -} - -void OSLoadContext(OSContext *context) { puts("OSLoadContext is a stub"); } - -void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu) { - puts("OSResetSystem is a stub"); -} - -BOOL OSRestoreInterrupts(BOOL level) { - puts("OSRestoreInterrupts is a stub"); - return FALSE; -} - -s32 OSResumeThread(OSThread *thread) { - puts("OSResumeThread is a stub"); - return 0; -} - -void OSSetCurrentContext(OSContext *context) { - puts("OSSetCurrentContext is a stub"); -} - -void OSSetStringTable(void* stringTable) { - puts("OSSetStringTable is a stub"); -} - -s32 OSSuspendThread(OSThread *thread) { - puts("OSSuspendThread is a stub"); - return 0; -} - -void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime *td) { - puts("OSTicksToCalendarTime is a stub"); -} - -BOOL OSUnlink(OSModuleInfo *oldModule) { - puts("OSUnlink is a stub"); - return FALSE; -} - -void OSWakeupThread(OSThreadQueue *queue) { puts("OSWakeupThread is a stub"); } - -void PPCHalt() { puts("PPCHalt is a stub"); } - -void SoundChoID(int a, int b) { puts("SoundChoID is a stub"); } - -void SoundPan(int a, int b, int c) { puts("SoundPan is a stub"); } - -void SoundPitch(u16 a, int b) { puts("SoundPitch is a stub"); } - -void SoundRevID(int a, int b) { puts("SoundRevID is a stub"); } - -void VIConfigure(const GXRenderModeObj *rm) { puts("VIConfigure is a stub"); } - -void VIConfigurePan(u16 xOrg, u16 yOrg, u16 width, u16 height) { - puts("VIConfigurePan is a stub"); -} - -u32 VIGetRetraceCount() { - // puts("VIGetRetraceCount is a stub"); - return 0; // TODO this might be important -} - -u32 VIGetNextField() { - puts("VIGetNextField is a stub"); - return 0; -} - -void VISetBlack(BOOL black) { puts("VISetBlack is a stub"); } - -void VISetNextFrameBuffer(void *fb) { - // puts("VISetNextFrameBuffer is a stub"); -} - -void VIWaitForRetrace() { - if (sVIRetraceCallback) { - sVIRetraceCallback(0); - } -} - -s32 __CARDFormatRegionAsync(int a, int b) { - puts("__CARDFormatRegionAsync is a stub"); - return 0; -} - -void __GXSetSUTexSize() { puts("__GXSetSUTexSize is a stub"); } - -void __GXSetVAT() { puts("__GXSetVAT is a stub"); } - -void __GXSetVCD() { puts("__GXSetVCD is a stub"); } - -void __GXUpdateBPMask() { puts("__GXUpdateBPMask is a stub"); } - -u32 __OSGetDIConfig() { - puts("__OSGetDIConfig is a stub"); - return 0; -} - -__OSInterruptHandler __OSSetInterruptHandler(__OSInterrupt interrupt, - __OSInterruptHandler handler) { - puts("__OSSetInterruptHandler is a stub"); - return 0; -} - -OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask) { - puts("__OSUnmaskInterrupts is a stub"); - return 0; -} - -void SISetSamplingRate(u32 msec) { - // Maybe we could include SI later - puts("SISetSamplingRate is a stub"); -} - -VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback) { - sVIRetraceCallback = callback; - return callback; -} - -void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1) { - // puts("GXSetGPMetric is a stub"); -} - -void GXReadGPMetric(u32 *cnt0, u32 *cnt1) { - // puts("GXReadGPMetric is a stub"); -} - -void GXClearGPMetric(void) { - // puts("GXClearGPMetric is a stub"); -} - -void GXReadMemMetric(u32 *cp_req, u32 *tc_req, u32 *cpu_rd_req, u32 *cpu_wr_req, - u32 *dsp_req, u32 *io_req, u32 *vi_req, u32 *pe_req, - u32 *rf_req, u32 *fi_req) { - // puts("GXReadMemMetric is a stub"); -} - -void GXClearMemMetric(void) { - // puts("GXClearMemMetric is a stub"); -} - -void GXClearVCacheMetric(void) { - // puts("GXClearVCacheMetric is a stub"); -} - -void GXReadPixMetric(u32 *top_pixels_in, u32 *top_pixels_out, - u32 *bot_pixels_in, u32 *bot_pixels_out, - u32 *clr_pixels_in, u32 *copy_clks) { - // puts("GXReadPixMetric is a stub"); -} - -void GXClearPixMetric(void) { - // puts("GXClearPixMetric is a stub"); -} - -void GXSetVCacheMetric(GXVCachePerf attr) { - // puts("GXSetVCacheMetric is a stub"); -} - -void GXReadVCacheMetric(u32 *check, u32 *miss, u32 *stall) { - // puts("GXReadVCacheMetric is a stub"); -} - -void GXSetDrawSync(u16 token) { - // puts("GXSetDrawSync is a stub"); -} - -GXDrawSyncCallback GXSetDrawSyncCallback(GXDrawSyncCallback cb) { - puts("GXSetDrawSyncCallback is a stub"); - // TODO - return cb; -} - -void PPCSync(void) { - // puts("PPCSync is a stub"); -} - -void GXWaitDrawDone(void) { - // puts("GXWaitDrawDone is a stub"); -} - -void GXSetTevIndTile(GXTevStageID tev_stage, GXIndTexStageID ind_stage, - u16 tilesize_s, u16 tilesize_t, u16 tilespacing_s, - u16 tilespacing_t, GXIndTexFormat format, - GXIndTexMtxID matrix_sel, GXIndTexBiasSel bias_sel, - GXIndTexAlphaSel alpha_sel) { - // TODO - // puts("GXSetTevIndTile is a stub"); -} - -void GXResetWriteGatherPipe(void) { - // puts("GXResetWriteGatherPipe is a stub"); -} - -void ARQInit(void) { puts("ARQInit is a stub"); } - -void GXProject(f32 x, f32 y, f32 z, const f32 mtx[3][4], const f32 *pm, - const f32 *vp, f32 *sx, f32 *sy, f32 *sz) { - Vec peye; - f32 xc; - f32 yc; - f32 zc; - f32 wc; - - peye.x = mtx[0][3] + ((mtx[0][2] * z) + ((mtx[0][0] * x) + (mtx[0][1] * y))); - peye.y = mtx[1][3] + ((mtx[1][2] * z) + ((mtx[1][0] * x) + (mtx[1][1] * y))); - peye.z = mtx[2][3] + ((mtx[2][2] * z) + ((mtx[2][0] * x) + (mtx[2][1] * y))); - if (pm[0] == 0.0f) { - xc = (peye.x * pm[1]) + (peye.z * pm[2]); - yc = (peye.y * pm[3]) + (peye.z * pm[4]); - zc = pm[6] + (peye.z * pm[5]); - wc = 1.0f / -peye.z; - } else { - xc = pm[2] + (peye.x * pm[1]); - yc = pm[4] + (peye.y * pm[3]); - zc = pm[6] + (peye.z * pm[5]); - wc = 1.0f; - } - *sx = (vp[2] / 2.0f) + (vp[0] + (wc * (xc * vp[2] / 2.0f))); - *sy = (vp[3] / 2.0f) + (vp[1] + (wc * (-yc * vp[3] / 2.0f))); - *sz = vp[5] + (wc * (zc * (vp[5] - vp[4]))); -} - -void GXGetViewportv(f32 *vp) { - // TODO -} - -void OSSetSoundMode(u32 mode) {} - -u32 AIGetDSPSampleRate(void) { - puts("AIGetDSPSampleRate is a stub"); - return 0; -} - -void AIInit(u8* stack) { - puts("AIInit is a stub"); -} - -void AIInitDMA(u32 start_addr, u32 length) { - puts("AIInitDMA is a stub"); -} - -AIDCallback AIRegisterDMACallback(AIDCallback callback) { - puts("AIRegisterDMACallback is a stub"); - return NULL; -} - -void AISetDSPSampleRate(u32 rate) { - puts("AISetDSPSampleRate is a stub"); -} - -void AIStartDMA(void) { - puts("AIStartDMA is a stub"); -} - -void AIStopDMA(void) { - puts("AIStopDMA is a stub"); -} - -u32 ARAlloc(u32 length) { - puts("ARAlloc is a stub"); - return 0; -} - -u32 ARGetSize(void) { - puts("ARGetSize is a stub"); - return 0; -} - -u32 ARInit(u32* stack_index_addr, u32 num_entries) { - puts("ARInit is a stub"); - return 0; -} - -void ARQPostRequest(ARQRequest* request, u32 owner, u32 type, u32 priority, u32 source, u32 dest, u32 length, ARQCallback callback) { - puts("ARQPostRequest is a stub"); -} - -int CARDProbe(s32 chan) { - puts("CARDProbe is a stub"); - return 0; -} - -void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, f32 scaleS, f32 scaleT, f32 transS, - f32 transT) { - puts("C_MTXLightOrtho is a stub"); -} - -void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scaleS, f32 scaleT, f32 transS, - f32 transT) { - puts("C_MTXLightPerspective is a stub"); -} - -void C_MTXLookAt(Mtx m, const Point3d* camPos, const Vec* camUp, const Point3d* target) { - puts("C_MTXLookAt is a stub"); -} - -void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f) { - puts("C_MTXOrtho is a stub"); -} - -void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f) { - puts("C_MTXPerspective is a stub"); -} - -void C_MTXRotAxisRad(Mtx m, const Vec* axis, f32 rad) { - puts("C_MTXRotAxisRad is a stub"); -} - -void C_QUATRotAxisRad(Quaternion* r, const Vec* axis, f32 rad) { - puts("C_QUATRotAxisRad is a stub"); -} - -void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t) { - puts("C_QUATSlerp is a stub"); -} - -void C_VECHalfAngle(const Vec* a, const Vec* b, Vec* half) { - puts("C_VECHalfAngle is a stub"); -} - -void C_VECReflect(const Vec* src, const Vec* normal, Vec* dst) { - puts("C_VECReflect is a stub"); -} - -void DCZeroRange(void* addr, u32 nBytes) { - puts("C_VECReflect is a stub"); -} - -void DSPAssertInt(void) { - puts("DSPAssertInt is a stub"); -} - -u32 DSPCheckMailFromDSP(void) { - puts("DSPCheckMailFromDSP is a stub"); - return 0; -} - -u32 DSPCheckMailToDSP(void) { - puts("DSPCheckMailToDSP is a stub"); - return 0; -} - -void DSPInit(void) { - puts("DSPInit is a stub"); -} - -u32 DSPReadMailFromDSP(void) { - puts("DSPReadMailFromDSP is a stub"); - return 0; -} - -void DSPSendMailToDSP(u32 mail) { - puts("DSPSendMailToDSP is a stub"); -} - -BOOL DVDChangeDir(const char* dirName) { - puts("DVDChangeDir is a stub"); - return FALSE; -} - -BOOL DVDCheckDisk(void) { - puts("DVDCheckDisk is a stub"); - return FALSE; -} - -BOOL DVDClose(DVDFileInfo* fileInfo) { - puts("DVDClose is a stub"); - return FALSE; -} - -int DVDCloseDir(DVDDir* dir) { - puts("DVDCloseDir is a stub"); - return 0; -} - -s32 DVDConvertPathToEntrynum(const char* pathPtr) { - puts("DVDConvertPathToEntrynum is a stub"); - return 0; -} - -BOOL DVDFastOpen(s32 entrynum, DVDFileInfo* fileInfo) { - puts("DVDFastOpen is a stub"); - return FALSE; -} - -s32 DVDGetCommandBlockStatus(const DVDCommandBlock* block) { - puts("DVDGetCommandBlockStatus is a stub"); - return 0; -} - -DVDDiskID* DVDGetCurrentDiskID(void) { - puts("DVDGetCurrentDiskID is a stub"); - return NULL; -} - -s32 DVDGetDriveStatus(void) { - puts("DVDGetDriveStatus is a stub"); - return 0; -} - -void DVDInit(void) { - puts("DVDInit is a stub"); -} - -BOOL DVDOpen(const char* fileName, DVDFileInfo* fileInfo) { - puts("DVDOpen is a stub"); - return FALSE; -} - -int DVDOpenDir(const char* dirName, DVDDir* dir) { - puts("DVDOpenDir is a stub"); - return 0; -} - -BOOL DVDReadAsyncPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, - DVDCallback callback, s32 prio) { - puts("DVDReadAsyncPrio is a stub"); - return FALSE; -} - -int DVDReadDir(DVDDir* dir, DVDDirEntry* dirent) { - puts("DVDReadDir is a stub"); - return 0; -} - -s32 DVDReadPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, s32 prio) { - puts("DVDReadPrio is a stub"); - return 0; -} - -void GDFlushCurrToMem(void) { - puts("GDFlushCurrToMem is a stub"); -} - -void GDInitGDLObj(GDLObj* dl, void* start, u32 length) { - puts("GDInitGDLObj is a stub"); -} - -void GDOverflowed(void) { - puts("GDOverflowed is a stub"); -} - -void GDPadCurr32(void) { - puts("GDPadCurr32 is a stub"); -} - -extern "C" { - -void GDSetArray(GXAttr attr, void* base_ptr, u8 stride) { - puts("GDSetArray is a stub"); -} - -void GDSetArrayRaw(GXAttr attr, u32 base_ptr_raw, u8 stride) { - puts("GDSetArrayRaw is a stub"); -} - -void GDSetVtxDescv(const GXVtxDescList* attrPtr) { - puts("GDSetVtxDescv is a stub"); -} - -} - -void GXAbortFrame(void) { - puts("GXAbortFrame is a stub"); -} - -void GXEnableTexOffsets(GXTexCoordID coord, GXBool line_enable, GXBool point_enable) { - puts("GXEnableTexOffsets is a stub"); -} - -OSThread* GXGetCurrentGXThread(void) { - puts("GXGetCurrentGXThread is a stub"); - return NULL; -} - -void* GXGetFifoBase(const GXFifoObj* fifo) { - puts("GXGetFifoBase is a stub"); - return NULL; -} - -u32 GXGetFifoSize(const GXFifoObj* fifo) { - puts("GXGetFifoSize is a stub"); - return 0; -} - -u16 GXGetNumXfbLines(u16 efbHeight, f32 yScale) { - puts("GXGetNumXfbLines is a stub"); - return 0; -} - -void GXGetScissor(u32* left, u32* top, u32* wd, u32* ht) { - puts("GXGetScissor is a stub"); -} - -u32 GXGetTexObjTlut(const GXTexObj* tex_obj) { - puts("GXGetTexObjTlut is a stub"); - return 0; -} - -f32 GXGetYScaleFactor(u16 efbHeight, u16 xfbHeight) { - puts("GXGetYScaleFactor is a stub"); - return 0.f; -} - -void GXInitTexCacheRegion(GXTexRegion* region, GXBool is_32b_mipmap, u32 tmem_even, GXTexCacheSize size_even, - u32 tmem_odd, GXTexCacheSize size_odd) { - puts("GXInitTexCacheRegion is a stub"); -} - -GXRenderModeObj GXNtsc480Int = { - (VITVMode)0, 640, 480, 480, 40, 0, 640, 480, (VIXFBMode)1, 0, 0, { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } +static u64 GetGCTicks() { +#if __APPLE__ + return mach_absolute_time() * MachToDolphinNum / MachToDolphinDenom; +#elif __linux__ || __FreeBSD__ + struct timespec tp; + clock_gettime(CLOCK_MONOTONIC, &tp); + + return ((tp.tv_sec * 1000000000ull) + tp.tv_nsec) * OS_CORE_CLOCK / 1000000000ull; +#elif _WIN32 + if (!PerfInitialized) { + QueryPerformanceFrequency(&PerfFrequency); + PerfInitialized = true; + } + LARGE_INTEGER perf; + QueryPerformanceCounter(&perf); + + perf.QuadPart *= OS_CORE_CLOCK; + perf.QuadPart /= PerfFrequency.QuadPart; + + return perf.QuadPart; +#else + return 0; +#endif +} + +u32 OSGetConsoleType() { + return OS_CONSOLE_RETAIL1; +} + +u32 OSGetSoundMode() { + return 2; +} + +void OSInit() { + // Thread system is lazy-initialized via OSGetCurrentThread() +} + +// ========================================================================== +// Message Queue (thread-safe implementation) +// ========================================================================== + +// Malloc-based allocator to bypass JKRHeap operator new/delete +template +struct MallocAllocator { + using value_type = T; + MallocAllocator() = default; + template MallocAllocator(const MallocAllocator&) noexcept {} + T* allocate(std::size_t n) { + void* p = std::malloc(n * sizeof(T)); + if (!p) throw std::bad_alloc(); + return static_cast(p); + } + void deallocate(T* p, std::size_t) noexcept { std::free(p); } + template bool operator==(const MallocAllocator&) const noexcept { return true; } + template bool operator!=(const MallocAllocator&) const noexcept { return false; } }; -void GXPeekZ(u16 x, u16 y, u32* z) { - puts("GXPeekZ is a stub"); +template +struct MallocDeleter { + void operator()(T* p) const { + p->~T(); + std::free(p); + } +}; + +template +std::unique_ptr> make_malloc_unique(Args&&... args) { + void* mem = std::malloc(sizeof(T)); + if (!mem) throw std::bad_alloc(); + T* obj = new (mem) T(std::forward(args)...); + return std::unique_ptr>(obj); } -void GXReadXfRasMetric(u32* xf_wait_in, u32* xf_wait_out, u32* ras_busy, u32* clocks) { - puts("GXReadXfRasMetric is a stub"); +template +using MallocMap = std::unordered_map, std::equal_to, + MallocAllocator>>; + +// Side-table for native synchronization per OSMessageQueue +struct PCMessageQueueData { + std::mutex mtx; + std::condition_variable cvSend; // Notified when space becomes available + std::condition_variable cvReceive; // Notified when a message arrives +}; + +// Lazy-initialized to avoid DLL static init crashes +static std::mutex& GetMsgQueueMapMutex() { + static std::mutex mtx; + return mtx; +} +static MallocMap>>& GetMsgQueueMap() { + static MallocMap>> map; + return map; } -void GXSetClipMode(GXClipMode mode) { - puts("GXSetClipMode is a stub"); -} - -void GXSetCoPlanar(GXBool enable) { - puts("GXSetCoPlanar is a stub"); -} - -void GXSetCopyClamp(GXFBClamp clamp) { - puts("GXSetCopyClamp is a stub"); -} - -OSThread* GXSetCurrentGXThread(void) { - puts("GXSetCurrentGXThread is a stub"); - return NULL; -} - -void GXSetFogRangeAdj(GXBool enable, u16 center, const GXFogAdjTable* table) { - puts("GXSetFogRangeAdj is a stub"); -} - -void GXSetMisc(GXMiscToken token, u32 val) { - puts("GXSetMisc is a stub"); -} - -void GXSetPointSize(u8 pointSize, GXTexOffset texOffsets) { - puts("GXSetPointSize is a stub"); -} - -void GXSetProjectionv(const f32* ptr) { - puts("GXSetProjectionv is a stub"); -} - -void GXSetVtxAttrFmtv(GXVtxFmt vtxfmt, const GXVtxAttrFmtList* list) { - puts("GXSetVtxAttrFmtv is a stub"); -} - -void LCDisable(void) { - puts("LCDisable is a stub"); -} - -void LCQueueWait(u32 len) { - puts("LCQueueWait is a stub"); -} - -u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes) { - puts("LCStoreData is a stub"); - return 0; -} - -void* OSAllocFromArenaLo(u32 size, u32 align) { - puts("OSAllocFromArenaLo is a stub"); - return NULL; -} - -void OSCancelAlarm(OSAlarm *alarm) { - puts("OSCancelAlarm is a stub"); -} - -void OSCancelThread(OSThread* thread) { - puts("OSCancelThread is a stub"); -} - -s32 OSCheckActiveThreads(void) { - puts("OSCheckActiveThreads is a stub"); - return 0; -} - -void OSCreateAlarm(OSAlarm* alarm) { - puts("OSCreateAlarm is a stub"); -} - -int OSCreateThread(OSThread* thread, void* (*func)(void*), void* param, void* stack, u32 stackSize, OSPriority priority, u16 attr) { - puts("OSCreateThread is a stub"); - return 0; -} - -void OSDetachThread(OSThread* thread) { - puts("OSDetachThread is a stub"); -} - -s32 OSDisableScheduler(void) { - puts("OSDisableScheduler is a stub"); - return 0; -} - -BOOL OSEnableInterrupts(void) { - puts("OSEnableInterrupts is a stub"); - return FALSE; -} - -s32 OSEnableScheduler(void) { - puts("OSEnableScheduler is a stub"); - return 0; -} - -void OSExitThread(void* val) { - puts("OSExitThread is a stub"); -} - -void OSFillFPUContext(OSContext* context) { - puts("OSFillFPUContext is a stub"); -} - -void* OSGetArenaHi(void) { - puts("OSGetArenaHi is a stub"); - return NULL; -} - -void* OSGetArenaLo(void) { - puts("OSGetArenaLo is a stub"); - return NULL; -} - -OSContext* OSGetCurrentContext(void) { - puts("OSGetCurrentContext is a stub"); - return NULL; -} - -u32 OSGetProgressiveMode(void) { - puts("OSGetProgressiveMode is a stub"); - return 0; -} - -u32 OSGetResetCode() { - puts("OSGetResetCode is a stub"); - return 0; -} - -BOOL OSGetResetSwitchState(void) { - puts("OSGetResetSwitchState is a stub"); - return FALSE; -} - -s32 OSGetThreadPriority(OSThread* thread) { - puts("OSGetThreadPriority is a stub"); - return 0; -} - -OSTick OSGetTick(void) { - puts("OSGetTick is a stub"); - return 0; -} - -OSTime OSGetTime(void) { - puts("OSGetTime is a stub"); - return 0; -} - -void OSInit(void) { - puts("OSInit is a stub"); -} - -void* OSInitAlloc(void* arenaStart, void* arenaEnd, int maxHeaps) { - puts("OSInitAlloc is a stub"); - return NULL; -} - -void OSInitCond(OSCond* cond) { - puts("OSInitCond is a stub"); +static PCMessageQueueData& GetMsgQueueData(OSMessageQueue* mq) { + std::lock_guard lock(GetMsgQueueMapMutex()); + auto& map = GetMsgQueueMap(); + auto it = map.find(mq); + if (it == map.end()) { + auto result = map.emplace(mq, make_malloc_unique()); + return *result.first->second; + } + return *it->second; } void OSInitMessageQueue(OSMessageQueue* mq, void* msgArray, s32 msgCount) { - puts("OSInitMessageQueue is a stub"); -} - -void OSInitMutex(OSMutex* mutex) { - puts("OSInitMutex is a stub"); -} - -void OSInitThreadQueue(OSThreadQueue* queue) { - puts("OSInitThreadQueue is a stub"); -} - -BOOL OSIsThreadTerminated(OSThread* thread) { - puts("OSIsThreadTerminated is a stub"); - return FALSE; -} - -int OSJamMessage(OSMessageQueue* mq, void* msg, s32 flags) { - puts("OSJamMessage is a stub"); - return 0; -} - -BOOL OSLinkFixed(OSModuleInfo* newModule, void* bss) { - puts("OSLinkFixed is a stub"); - return FALSE; -} - -void OSLockMutex(OSMutex* mutex) { - puts("OSLockMutex is a stub"); -} - -void OSProtectRange(u32 chan, void* addr, u32 nBytes, u32 control) { - puts("OSProtectRange is a stub"); -} - -int OSReceiveMessage(OSMessageQueue* mq, void* msg, s32 flags) { - puts("OSReceiveMessage is a stub"); - return 0; + if (!mq) return; + mq->queueSend.head = mq->queueSend.tail = nullptr; + mq->queueReceive.head = mq->queueReceive.tail = nullptr; + mq->msgArray = msgArray; + mq->msgCount = msgCount; + mq->firstIndex = 0; + mq->usedCount = 0; + GetMsgQueueData(mq); // Ensure side-table entry exists } int OSSendMessage(OSMessageQueue* mq, void* msg, s32 flags) { - puts("OSSendMessage is a stub"); - return 0; + if (!mq) return 0; + + PCMessageQueueData& data = GetMsgQueueData(mq); + std::unique_lock lock(data.mtx); + + if (mq->usedCount >= mq->msgCount) { + if (flags == OS_MESSAGE_NOBLOCK) return 0; + // BLOCK: wait until space is available + data.cvSend.wait(lock, [mq]() { return mq->usedCount < mq->msgCount; }); + } + + s32 idx = (mq->firstIndex + mq->usedCount) % mq->msgCount; + ((OSMessage*)mq->msgArray)[idx] = msg; + mq->usedCount++; + + data.cvReceive.notify_one(); + return 1; } -void OSSetAlarm(OSAlarm* alarm, OSTime tick, OSAlarmHandler handler) { - puts("OSSetAlarm is a stub"); +int OSReceiveMessage(OSMessageQueue* mq, void* msg, s32 flags) { + if (!mq) return 0; + + PCMessageQueueData& data = GetMsgQueueData(mq); + std::unique_lock lock(data.mtx); + + if (mq->usedCount == 0) { + if (flags == OS_MESSAGE_NOBLOCK) return 0; + // BLOCK: wait until a message arrives + data.cvReceive.wait(lock, [mq]() { return mq->usedCount > 0; }); + } + + if (msg) { + *(OSMessage*)msg = ((OSMessage*)mq->msgArray)[mq->firstIndex]; + } + mq->firstIndex = (mq->firstIndex + 1) % mq->msgCount; + mq->usedCount--; + + data.cvSend.notify_one(); + return 1; +} + +int OSJamMessage(OSMessageQueue* mq, void* msg, s32 flags) { + if (!mq) return 0; + + PCMessageQueueData& data = GetMsgQueueData(mq); + std::unique_lock lock(data.mtx); + + if (mq->usedCount >= mq->msgCount) { + if (flags == OS_MESSAGE_NOBLOCK) return 0; + // BLOCK: wait until space is available + data.cvSend.wait(lock, [mq]() { return mq->usedCount < mq->msgCount; }); + } + + // Jam inserts at the front of the queue + mq->firstIndex = (mq->firstIndex - 1 + mq->msgCount) % mq->msgCount; + ((OSMessage*)mq->msgArray)[mq->firstIndex] = msg; + mq->usedCount++; + + data.cvReceive.notify_one(); + return 1; +} + +// ========================================================================== +// Arena Functions +// ========================================================================== + +static void* sArenaLo = nullptr; +static void* sArenaHi = nullptr; + +void* OSGetArenaHi(void) { + return sArenaHi; +} + +void* OSGetArenaLo(void) { + return sArenaLo; } void OSSetArenaHi(void* newHi) { - puts("OSSetArenaHi is a stub"); + sArenaHi = newHi; } void OSSetArenaLo(void* newLo) { - puts("OSSetArenaLo is a stub"); + sArenaLo = newLo; } -OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler) { - puts("OSSetErrorHandler is a stub"); - return NULL; +void* OSAllocFromArenaLo(u32 size, u32 align) { + if (!sArenaLo || !sArenaHi) return nullptr; + + uintptr_t lo = (uintptr_t)sArenaLo; + if (align > 0) { + lo = (lo + align - 1) & ~((uintptr_t)align - 1); + } + + uintptr_t hi = (uintptr_t)sArenaHi; + if (lo + size > hi) { + OSReport("[PC-Arena] OSAllocFromArenaLo: out of arena space (need %u, have %u)\n", + size, (u32)(hi - lo)); + return nullptr; + } + + void* result = (void*)lo; + sArenaLo = (void*)(lo + size); + return result; } -void OSSetPeriodicAlarm(OSAlarm* alarm, OSTime start, OSTime period, OSAlarmHandler handler) { - puts("OSSetPeriodicAlarm is a stub"); +void* OSInitAlloc(void* arenaStart, void* arenaEnd, int maxHeaps) { + return arenaStart; } -void OSSetProgressiveMode(u32 on) { - puts("OSSetProgressiveMode is a stub"); +// ========================================================================== +// Remaining OS Stubs +// ========================================================================== + +void OSSetSoundMode(u32 mode) {} + +void OSCreateAlarm(OSAlarm* alarm) {} + +void OSCancelAlarm(OSAlarm* alarm) {} + +void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime* td) { + if (td) memset(td, 0, sizeof(OSCalendarTime)); } -void OSSetSaveRegion(void* start, void* end) { - puts("OSSetSaveRegion is a stub"); +OSTime OSGetTime(void) { + return (OSTime)GetGCTicks(); } -OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback callback) { - puts("OSSetSwitchThreadCallback is a stub"); - return NULL; +OSTick OSGetTick(void) { + return (OSTick)GetGCTicks(); } -int OSSetThreadPriority(OSThread* thread, OSPriority priority) { - puts("OSSetThreadPriority is a stub"); - return 0; +u16 OSGetFontEncode() { return 0; } + +char* OSGetFontTexture(char* string, void** image, s32* x, s32* y, s32* width) { return 0; } +char* OSGetFontWidth(char* string, s32* width) { return 0; } + +BOOL OSGetResetButtonState() { return FALSE; } +BOOL OSInitFont(OSFontHeader* fontData) { return FALSE; } +BOOL OSLink(OSModuleInfo* newModule, void* bss) { return TRUE; } + +void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu) { + OSReport("[PC] OSResetSystem called (reset=%d, code=%u)\n", reset, resetCode); } -void OSSignalCond(OSCond* cond) { - puts("OSSignalCond is a stub"); +void OSSetStringTable(void* stringTable) {} +BOOL OSUnlink(OSModuleInfo* oldModule) { return FALSE; } + +void OSSwitchFiberEx(__REGISTER u32 param_0, __REGISTER u32 param_1, __REGISTER u32 param_2, + __REGISTER u32 param_3, __REGISTER u32 code, __REGISTER u32 stack) { + // On PC, call the function directly instead of switching stacks. + // The PPC version switches to 'stack' and calls code(param_0, param_1). + // Only caller is mDoPrintf_vprintf_Interrupt: OSSwitchFiberEx(fmt, args, 0, 0, vprintf, sp) + typedef void (*Func2)(u32, u32); + ((Func2)(uintptr_t)code)(param_0, param_1); } -void OSSleepThread(OSThreadQueue* queue) { - puts("OSSleepThread is a stub"); +u32 __OSGetDIConfig() { return 0; } +u32 OSGetProgressiveMode(void) { return 0; } +u32 OSGetResetCode(void) { return 0; } +BOOL OSGetResetSwitchState() { return FALSE; } +BOOL OSLinkFixed(OSModuleInfo* newModule, void* bss) { return TRUE; } +void OSProtectRange(u32 chan, void* addr, u32 nBytes, u32 control) {} +void OSSetPeriodicAlarm(OSAlarm* alarm, OSTime start, OSTime period, OSAlarmHandler handler) {} +void OSSetProgressiveMode(u32 on) {} +void OSSetSaveRegion(void* start, void* end) {} +OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler) { return NULL; } +void OSSetAlarm(OSAlarm* alarm, OSTime tick, OSAlarmHandler handler) {} + +#pragma mark SOUND +void SoundChoID(int a, int b) { + puts("SoundChoID is a stub"); +} +void SoundPan(int a, int b, int c) { + puts("SoundPan is a stub"); +} +void SoundPitch(u16 a, int b) { + puts("SoundPitch is a stub"); +} +void SoundRevID(int a, int b) { + puts("SoundRevID is a stub"); } -BOOL OSTryLockMutex(OSMutex* mutex) { - puts("OSTryLockMutex is a stub"); - return FALSE; +#pragma mark CARD + +#include + +extern "C" int CARDProbe(s32 chan) { + puts("CARDProbe is a stub"); + return 0; } -void OSUnlockMutex(OSMutex* mutex) { - puts("OSUnlockMutex is a stub"); +s32 CARDCancel(CARDFileInfo* fileInfo) { + puts("CARDCancel is a stub"); + return 0; } -void OSWaitCond(OSCond* cond, OSMutex* mutex) { - puts("OSWaitCond is a stub"); +s32 CARDCheck(s32 chan) { + puts("CARDCheck is a stub"); + return 0; } -void OSYieldThread(void) { - puts("OSYieldThread is a stub"); +s32 CARDCheckAsync(s32 chan, CARDCallback callback) { + puts("CARDCheckAsync is a stub"); + return 0; } -u32 PPCMfhid2() { - puts("PPCMfhid2 is a stub"); - return 0; +s32 CARDClose(CARDFileInfo* fileInfo) { + puts("CARDClose is a stub"); + return 0; } -u32 PPCMfmsr() { - puts("PPCMfmsr is a stub"); - return 0; +s32 CARDCreate(s32 chan, const char* fileName, u32 size, CARDFileInfo* fileInfo) { + puts("CARDCreate is a stub"); + return 0; } -void PPCMtmsr(u32 newMSR) { - puts("PPCMtmsr is a stub"); +s32 CARDCreateAsync(s32 chan, const char* fileName, u32 size, CARDFileInfo* fileInfo, + CARDCallback callback) { + puts("CARDCreateAsync is a stub"); + return 0; } -void PSMTXConcat(const Mtx a, const Mtx b, Mtx ab) { - puts("PSMTXConcat is a stub"); +s32 CARDDelete(s32 chan, const char* fileName) { + puts("CARDDelete is a stub"); + return 0; } -void PSMTXCopy(const Mtx src, Mtx dst) { - puts("PSMTXCopy is a stub"); +s32 CARDDeleteAsync(s32 chan, const char* fileName, CARDCallback callback) { + puts("CARDDeleteAsync is a stub"); + return 0; } -void PSMTXIdentity(Mtx m) { - puts("PSMTXIdentity is a stub"); +s32 CARDFastDeleteAsync(s32 chan, s32 fileNo, CARDCallback callback) { + puts("CARDFastDeleteAsync is a stub"); + return 0; } -u32 PSMTXInverse(const Mtx src, Mtx inv) { - puts("PSMTXInverse is a stub"); - return 0; +s32 CARDFastOpen(s32 chan, s32 fileNo, CARDFileInfo* fileInfo) { + puts("CARDFastOpen is a stub"); + return 0; } -void PSMTXMultVec(const Mtx m, const Vec* src, Vec* dst) { - puts("PSMTXMultVec is a stub"); +s32 CARDFormat(s32 chan) { + puts("CARDFormat is a stub"); + return 0; } -void PSMTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count) { - puts("PSMTXMultVecArray is a stub"); +s32 CARDFreeBlocks(s32 chan, s32* byteNotUsed, s32* filesNotUsed) { + puts("CARDFreeBlocks is a stub"); + return 0; } -void PSMTXMultVecArraySR(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count) { - puts("PSMTXMultVecArraySR is a stub"); +s32 CARDGetResultCode(s32 chan) { + puts("CARDGetResultCode is a stub"); + return 0; } -void PSMTXMultVecSR(const Mtx m, const Vec* src, Vec* dst) { - puts("PSMTXMultVecSR is a stub"); +s32 CARDGetStatus(s32 chan, s32 fileNo, CARDStat* stat) { + puts("CARDGetStatus is a stub"); + return 0; } -void PSMTXQuat(Mtx m, const Quaternion* q) { - puts("PSMTXQuat is a stub"); +s32 CARDGetSectorSize(s32 chan, u32* size) { + puts("CARDGetSectorSize is a stub"); + return 0; } -void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad) { - puts("PSMTXRotAxisRad is a stub"); +void CARDInit() { + puts("CARDInit is a stub"); } -void PSMTXRotRad(Mtx m, char axis, f32 rad) { - puts("PSMTXRotRad is a stub"); +s32 CARDMount(s32 chan, void* workArea, CARDCallback detachCallback) { + puts("CARDMount is a stub"); + return 0; } -void PSMTXScale(Mtx m, f32 xS, f32 yS, f32 zS) { - puts("PSMTXScale is a stub"); +s32 CARDMountAsync(s32 chan, void* workArea, CARDCallback detachCallback, + CARDCallback attachCallback) { + puts("CARDMountAsync is a stub"); + return 0; } -void PSMTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS) { - puts("PSMTXScaleApply is a stub"); +s32 CARDOpen(s32 chan, const char* fileName, CARDFileInfo* fileInfo) { + puts("CARDOpen is a stub"); + return 0; } -void PSMTXTrans(Mtx m, f32 xT, f32 yT, f32 zT) { - puts("PSMTXTrans is a stub"); +s32 CARDProbeEx(s32 chan, s32* memSize, s32* sectorSize) { + puts("CARDProbeEx is a stub"); + return 0; } -void PSMTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT) { - puts("PSMTXTransApply is a stub"); +s32 CARDRead(CARDFileInfo* fileInfo, void* addr, s32 length, s32 offset) { + puts("CARDRead is a stub"); + return 0; } -void PSQUATMultiply(const Quaternion* p, const Quaternion* q, Quaternion* pq) { - puts("PSQUATMultiply is a stub"); +s32 CARDReadAsync(CARDFileInfo* fileInfo, void* addr, s32 length, s32 offset, + CARDCallback callback) { + puts("CARDReadAsync is a stub"); + return 0; } -void PSVECAdd(const Vec* a, const Vec* b, Vec* ab) { - puts("PSVECAdd is a stub"); +s32 CARDRename(s32 chan, const char* oldName, const char* newName) { + puts("CARDRename is a stub"); + return 0; } -void PSVECCrossProduct(const Vec* a, const Vec* b, Vec* axb) { - puts("PSVECCrossProduct is a stub"); +s32 CARDRenameAsync(s32 chan, const char* oldName, const char* newName, CARDCallback callback) { + puts("CARDRenameAsync is a stub"); + return 0; } -f32 PSVECDistance(const Vec* a, const Vec* b) { - puts("PSVECDistance is a stub"); - return 0.f; +s32 CARDSetStatusAsync(s32 chan, s32 fileNo, CARDStat* stat, CARDCallback callback) { + puts("CARDSetStatusAsync is a stub"); + return 0; } -f32 PSVECDotProduct(const Vec* a, const Vec* b) { - puts("PSVECDotProduct is a stub"); - return 0.f; +s32 CARDUnmount(s32 chan) { + puts("CARDUnmount is a stub"); + return 0; } -f32 PSVECMag(const Vec* v) { - puts("PSVECMag is a stub"); - return 0.f; +extern "C" s32 CARDWrite(CARDFileInfo* fileInfo, void* addr, s32 length, s32 offset) { + puts("CARDWrite is a stub"); + return 0; } -void PSVECNormalize(const Vec* src, Vec* unit) { - puts("PSVECNormalize is a stub"); +s32 CARDWriteAsync(CARDFileInfo* fileInfo, const void* addr, s32 length, s32 offset, + CARDCallback callback) { + puts("CARDWriteAsync is a stub"); + return 0; } -void PSVECScale(const Vec* src, Vec* dst, f32 scale) { - puts("PSVECScale is a stub"); +s32 CARDGetSerialNo(s32 chan, u64* serialNo) { + return 0; } -f32 PSVECSquareDistance(const Vec* a, const Vec* b) { - puts("PSVECSquareDistance is a stub"); - return 0.f; +s32 CARDSetStatus(s32 chan, s32 fileNo, CARDStat* stat) { + return 0; } -f32 PSVECSquareMag(const Vec* v) { - puts("PSVECSquareMag is a stub"); - return 0.f; +s32 __CARDFormatRegionAsync(int a, int b) { + puts("__CARDFormatRegionAsync is a stub"); + return 0; } -void PSVECSubtract(const Vec* a, const Vec* b, Vec* a_b) { - puts("PSVECSubtract is a stub"); +#pragma mark DC + +void DCFlushRange(void* addr, u32 nBytes) { + // puts("DCFlushRange is a stub"); +} + +void DCFlushRangeNoSync(void* addr, u32 nBytes) { + // puts("DCFlushRangeNoSync is a stub"); +} + +void DCInvalidateRange(void* addr, u32 nBytes) { + // puts("DCInvalidateRange is a stub"); +} + +void DCStoreRange(void* addr, u32 nBytes) { + // puts("DCStoreRange is a stub"); +} + +void DCStoreRangeNoSync(void* addr, u32 nBytes) { + // puts("DCStoreRangeNoSync is a stub"); +} + +#pragma mark EXI + +BOOL EXIDeselect(int chan) { + puts("EXIDeselect is a stub"); + return FALSE; +} + +BOOL EXIDma(int chan, void* buffer, s32 size, int d, int e) { + puts("EXIDma is a stub"); + return FALSE; +} + +BOOL EXIImm(int chan, u32* b, int c, int d, int e) { + puts("EXIImm is a stub"); + return FALSE; +} + +BOOL EXILock(int chan, int b, int c) { + puts("EXILock is a stub"); + return FALSE; +} + +BOOL EXISelect(int chan, int b, int c) { + puts("EXISelect is a stub"); + return FALSE; +} + +BOOL EXISync(int chan) { + puts("EXISync is a stub"); + return FALSE; +} + +BOOL EXIUnlock(int chan) { + puts("EXIUnlock is a stub"); + return FALSE; +} + +#pragma mark LC + +void LCEnable() { + puts("LCEnable is a stub"); +} + +// OS-related functions consolidated under "# pragma mark OS" further up + +#pragma mark VI + +// VI retrace emulation: on GameCube, the VI chip fires a hardware interrupt at +// every VSync (~60Hz). This triggers pre/post retrace callbacks, which in turn +// send messages to JUTVideo's message queue. waitForTick() blocks on that queue. +// On PC, we simulate this by calling VIWaitForRetrace() once per frame in the +// main loop, which increments the retrace counter and fires the callbacks. +static u32 sRetraceCount = 0; +static VIRetraceCallback sVIPreRetraceCallback = NULL; +static VIRetraceCallback sVIPostRetraceCallback = NULL; + +extern "C" { + +void VIConfigure(const GXRenderModeObj* rm) { + // puts("VIConfigure is a stub"); +} + +void VIConfigurePan(u16 xOrg, u16 yOrg, u16 width, u16 height) { + // puts("VIConfigurePan is a stub"); +} + +u32 VIGetRetraceCount() { + return sRetraceCount; +} + +u32 VIGetNextField() { + return 0; +} + +void VISetBlack(BOOL black) { + // puts("VISetBlack is a stub"); +} + +void VISetNextFrameBuffer(void* fb) { + // puts("VISetNextFrameBuffer is a stub"); +} + +void VIWaitForRetrace() { + sRetraceCount++; + if (sVIPreRetraceCallback) { + sVIPreRetraceCallback(sRetraceCount); + } + if (sVIPostRetraceCallback) { + sVIPostRetraceCallback(sRetraceCount); + } } void* VIGetCurrentFrameBuffer(void) { - puts("VIGetCurrentFrameBuffer is a stub"); - return NULL; + return NULL; } u32 VIGetDTVStatus(void) { - puts("VIGetDTVStatus is a stub"); - return 0; + return 0; } void* VIGetNextFrameBuffer(void) { - puts("VIGetNextFrameBuffer is a stub"); - return NULL; + return NULL; +} + +VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback) { + VIRetraceCallback old = sVIPostRetraceCallback; + sVIPostRetraceCallback = callback; + return old; } VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback cb) { - puts("VISetPreRetraceCallback is a stub"); - return NULL; + VIRetraceCallback old = sVIPreRetraceCallback; + sVIPreRetraceCallback = cb; + return old; } +} // extern "C" + +#pragma mark DSP +#include +extern "C" void __DSP_insert_task(DSPTaskInfo* task) { + puts("__DSP_insert_task is a stub"); +} + +extern "C" void __DSP_boot_task(DSPTaskInfo*) { + puts("__DSP_boot_task is a stub"); +} + +extern "C" void __DSP_exec_task(DSPTaskInfo*, DSPTaskInfo*) { + puts("__DSP_exec_task is a stub"); +} + +extern "C" void __DSP_remove_task(DSPTaskInfo* task) { + puts("__DSP_remove_task is a stub"); +} + +void DSPAssertInt(void) { + puts("DSPAssertInt is a stub"); +} +u32 DSPCheckMailFromDSP(void) { + puts("DSPCheckMailFromDSP is a stub"); + return 0; +} +u32 DSPCheckMailToDSP(void) { + puts("DSPCheckMailToDSP is a stub"); + return 0; +} +void DSPInit(void) { + puts("DSPInit is a stub"); +} +u32 DSPReadMailFromDSP(void) { + puts("DSPReadMailFromDSP is a stub"); + return 0; +} +void DSPSendMailToDSP(u32 mail) { + puts("DSPSendMailToDSP is a stub"); +} + +#pragma mark Z2Audio +#include +void Z2AudioCS::extensionProcess(s32, s32) { + puts("Z2AudioMgr::play is a stub"); +} + +#pragma mark JORServer +#include + +int JOREventCallbackListNode::JORAct(u32, const char*) { + return 0; +} + +#pragma mark JSUMemoryOutputStream +#include +s32 JSUMemoryOutputStream::getAvailable() const { + return mLength - mPosition; +} + +s32 JSUMemoryOutputStream::getPosition() const { + return mPosition; +} + +#pragma mark JSURandomOutputStream +#include +s32 JSUMemoryOutputStream::seek(s32 offset, JSUStreamSeekFrom origin) { + // XXX I think this is correct? could be broken. + return this->seekPos(offset, origin); +} + +#pragma mark JKRHeap +#include +JKRHeap* JKRHeap::sRootHeap2; // XXX this is defined for WII/SHIELD, should we just define it for + // dusk builds? + +#pragma mark mDoExt_onCupOnAupPacket +#include +mDoExt_offCupOnAupPacket::~mDoExt_offCupOnAupPacket() { + puts("mDoExt_onCupOffAupPacket_c destructor is a stub"); +} +#pragma mark mDoExt_onCupOffAupPacket +mDoExt_onCupOffAupPacket::~mDoExt_onCupOffAupPacket() { + puts("mDoExt_onCupOffAupPacket_c destructor is a stub"); +} + +#pragma mark dKankyo_vrboxHIO_c +#include +void dKankyo_vrboxHIO_c::dKankyo_vrboxHIOInfoUpDateF() { + puts("dKankyo_vrboxHIO_c::dKankyo_vrboxHIOInfoUpDateF is a stub"); +} + +void dKankyo_lightHIO_c::dKankyo_lightHIOInfoUpDateF() { + puts("dKankyo_lightHIO_c::dKankyo_lightHIOInfoUpDateF is a stub"); +} + +#pragma mark dKankyo_HIO_c +#include +dKankyo_HIO_c::dKankyo_HIO_c() { + light.m_displayTVColorSettings = FALSE; + vrbox.m_displayVrboxTVColorSettings = FALSE; +} + +dKankyo_ParticlelightHIO_c::dKankyo_ParticlelightHIO_c() { + field_0x5 = 0; + prim_col.r = 255; + prim_col.g = 255; + prim_col.b = 255; + prim_col.a = 255; + env_col.r = 255; + env_col.g = 255; + env_col.b = 255; + env_col.a = 255; + blend_ratio = 0.5f; + field_0x14 = 0; + type = 0; + field_0x19 = 1; + field_0x1a = 0; +} + +dKankyo_dungeonlightHIO_c::dKankyo_dungeonlightHIO_c() { + field_0x5 = 0; + usedLights = 0; + displayDebugSphere = 0; + field_0x8 = 0; + field_0x9 = 0; +} + +dKankyo_demolightHIO_c::dKankyo_demolightHIO_c() { + adjust_ON = 0; + light.mPosition.x = 0.0f; + light.mPosition.y = 0.0f; + light.mPosition.z = 0.0f; + light.mColor.r = 255; + light.mColor.g = 255; + light.mColor.b = 255; + light.mPow = 1000.0f; + light.mFluctuation = 0.0f; +} + +dKankyo_efflightHIO_c::dKankyo_efflightHIO_c() { + adjust_ON = 0; + power = 80.0f; + fluctuation = 100.0f; + + step1.start_frame = 1; + step1.r = 191; + step1.g = 150; + step1.b = 45; + + step2.start_frame = 4; + step2.r = 180; + step2.g = 60; + step2.b = 0; + + step3.start_frame = 8; + step3.r = 75; + step3.g = 15; + step3.b = 0; + + step4.start_frame = 15; + step4.r = 0; + step4.g = 0; + step4.b = 0; +} + +dKankyo_vrboxHIO_c::dKankyo_vrboxHIO_c() { + m_VrboxSetting = 0; + field_0x5 = 0; + field_0x7 = 0; + field_0x8 = 0; + field_0x9 = 0; + field_0xa = 0; + field_0xb = 0; + field_0xc = 0; + field_0xd = 0; + field_0xe = -1; + field_0xf = -1; + field_0x10 = -1; + field_0x11 = -1; + field_0x12 = -1; + field_0x13 = -1; + field_0x14 = 0; + m_horizonHeight = 0.0f; +} + +dKankyo_lightHIO_c::dKankyo_lightHIO_c() { + m_HOSTIO_setting = FALSE; + field_0x52 = 0; + m_forcedPalette = FALSE; + m_displayColorPaletteCheckInfo = TRUE; + + field_0x58 = 0.0f; + field_0x60 = 0; + field_0x61 = 0; + field_0x62 = 0; + field_0x63 = 0; + field_0x64 = 0; + field_0x65 = 0; + field_0x66 = 0; + field_0x67 = 0; + field_0x68 = 0; + field_0x69 = 0; + field_0x6a = 0; + field_0x6b = 0; + + m_BG_fakelight_R = 0; + m_BG_fakelight_G = 0; + m_BG_fakelight_B = 0; + m_BG_fakelight_power = 0.0f; + + field_0x80 = 0; +} + +dKankyo_bloomHIO_c::dKankyo_bloomHIO_c() { + field_0x4 = 0; + m_saturationPattern = 0; + field_0x5 = 0; + + for (int i = 0; i < 64; i++) { + dKydata_BloomInfo_c* bloominf = dKyd_BloomInf_tbl_getp(i); + bloom_info[i] = bloominf->info; + } +} + +dKankyo_windHIO_c::dKankyo_windHIO_c() { + display_wind_dir = 0; + use_HOSTIO_adjustment = 0; + field_0x8 = -1; + global_x_angle = 0; + global_y_angle = 0; + global_wind_power = 0.3f; + field_0x14 = 0.0; + field_0x18 = 35.0f; + field_0x1c = 6.0f; + display_wind_trajectory = 0; + lightsword_x_angle = 1800; + lightsword_init_scale = 500.0f; + lightsword_end_scale = 300.0f; + influence = 1.0f; + lightsword_move_speed = 150.0f; + influence_attenuation = 0.3f; + wind_change_speed = 0.05f; + minigame_no_wind_duration = 90; + minigame_low_wind_duration = 60; + minigame_high_wind_duration = 90; +} +dKankyo_navyHIO_c::dKankyo_navyHIO_c() { + field_0x5 = 0; + field_0x6 = 0; + field_0x8 = 12; + cloud_sunny_wind_influence_rate = 10.0f; + cloud_sunny_bottom_height = 2500.0f; + cloud_sunny_top_height = 2500.0f; + cloud_sunny_size = 0.6f; + cloud_sunny_height_shrink_rate = 0.9999f; + cloud_sunny_alpha = 1.0f; + cloud_cloudy_wind_influence_rate = 25.0f; + cloud_cloudy_bottom_height = 1200.0f; + cloud_cloudy_top_height = 1200.0f; + cloud_cloudy_size = 0.84f; + cloud_cloudy_height_shrink_rate = 0.96f; + cloud_cloudy_alpha = 1.0f; + field_0x3c = 4000.0f; + field_0x40 = 2000.0f; + field_0x44 = 2500.0f; + field_0x48 = 80.0f; + field_0x4c = 0.18f; + field_0x68 = 1; + field_0x69 = 3; + field_0x50 = 255.0f; + field_0x58 = 800.0f; + field_0x5c = 250.0f; + field_0x54 = 1.0f; + field_0x60 = 1000.0f; + field_0x64 = 0.2f; + housi_max_number = 300; + housi_max_alpha = 120.0f; + housi_max_scale = 9.0f; + field_0x74 = 45; + field_0x75 = 136; + field_0x76 = 170; + field_0x78 = 109; + field_0x79 = 60; + field_0x7a = 205; + field_0x7c = 120.0f; + field_0x80 = 100.0f; + field_0x84 = 0.2f; + field_0x8a = 0; + field_0x88 = 0; + field_0x80 = 0.0f; + moon_col.r = 0; + moon_col.g = 0; + moon_col.b = 0; + moon_col.a = 255; + moon_scale = 8000.0f; + field_0xb0.x = 16.5f; + field_0xb0.y = -2.0f; + field_0xb0.z = 30.0f; + field_0xbc = 160.0f; + field_0xc0 = 0.06f; + field_0xc4 = 200; + field_0xc8 = 3.0f; + field_0xcc = 60.0f; + field_0xd0 = 69; + field_0xd1 = 60; + field_0xd2 = 39; + field_0xd4 = 124; + field_0xd5 = 124; + field_0xd6 = 104; + field_0xd3 = 255; + field_0xd8 = 255; + field_0xd9 = 0; + field_0xda = 0; + field_0xdc = 255; + field_0xdd = 255; + field_0xde = 0; + field_0xe0 = 500; + field_0xe4 = 0.4f; + sun_col.r = 255; + sun_col.g = 255; + sun_col.b = 241; + sun_col2.r = 255; + sun_col2.g = 145; + sun_col2.b = 73; + sun_adjust_ON = 0; + smell_adjust_ON = 0; + smell_col.r = 255; + smell_col.g = 255; + smell_col.b = 115; + smell_col2.r = 80; + smell_col2.g = 50; + smell_col2.b = 0; + smell_alpha = 1.0f; + field_0xf0 = 190; + field_0xf1 = 120; + field_0xf2 = 120; + field_0x108 = 60; + field_0x109 = 0; + field_0x10a = 0; + field_0xf4 = 60; + field_0xf5 = 150; + field_0xf6 = 230; + field_0x10c = 50; + field_0x10d = 65; + field_0x10e = 80; + field_0xf8 = 80; + field_0xf9 = 80; + field_0xfa = 20; + field_0x110 = 30; + field_0x111 = 30; + field_0x112 = 10; + field_0xfc = 33; + field_0xfd = 255; + field_0xfe = 125; + field_0x114 = 33; + field_0x115 = 255; + field_0x116 = 125; + field_0x120 = 0.1f; + field_0x124 = 1.0f; + constellation_maker_ON = 0; + constellation_maker_pos[0].x = 5900.0f; + constellation_maker_pos[0].y = 14000.0f; + constellation_maker_pos[0].z = -16000.0f; + constellation_maker_pos[1].x = 7500.0f; + constellation_maker_pos[1].y = 14000.0f; + constellation_maker_pos[1].z = -14700.0f; + constellation_maker_pos[2].x = 8700.0f; + constellation_maker_pos[2].y = 13920.0f; + constellation_maker_pos[2].z = -14700.0f; + constellation_maker_pos[3].x = 10200.0f; + constellation_maker_pos[3].y = 14320.0f; + constellation_maker_pos[3].z = -15000.0f; + constellation_maker_pos[4].x = 12300.0f; + constellation_maker_pos[4].y = 15400.0f; + constellation_maker_pos[4].z = -18400.0f; + constellation_maker_pos[5].x = 13000.0f; + constellation_maker_pos[5].y = 13500.0f; + constellation_maker_pos[5].z = -15000.0f; + constellation_maker_pos[6].x = 13000.0f; + constellation_maker_pos[6].y = 15400.0f; + constellation_maker_pos[6].z = -14500.0f; + constellation_maker_pos[7].x = 13000.0f; + constellation_maker_pos[7].y = 15400.0f; + constellation_maker_pos[7].z = -14500.0f; + constellation_maker_pos[8].x = 13000.0f; + constellation_maker_pos[8].y = 15400.0f; + constellation_maker_pos[8].z = -14500.0f; + constellation_maker_pos[9].x = 13000.0f; + constellation_maker_pos[9].y = 15400.0f; + constellation_maker_pos[9].z = -14500.0f; + lightning_scale_x_min = 14.0f; + lightning_scale_x_max = 20.0f; + lightning_scale_y_min = 14.0f; + lightning_scale_y_max = 20.0f; + lightning_tilt_angle = 2000; + field_0x1b6 = 3; + lightning_debug_mode = 0; + collect_light_reflect_pos.x = 60000.0f; + collect_light_reflect_pos.y = -5000.0f; + collect_light_reflect_pos.z = 0.0f; + moya_alpha = 0.12f; + field_0x1c5 = 0; + thunder_col.r = 75; + thunder_col.g = 130; + thunder_col.b = 150; + thunder_height = 2000.0f; + thunder_blacken_rate = 0.75f; + water_in_col_ratio_R = 0.0f; + water_in_col_ratio_G = 0.4f; + water_in_col_ratio_B = 0.5f; + field_0x1e8 = -10.0f; + field_0x1ec = 40.0f; + field_0x1f0 = 50.0f; + field_0x1f4 = 200.0f; + field_0x1f8 = 0.0f; + field_0x1e4 = 80; + field_0x1e5 = 80; + field_0x1e6 = 80; + field_0x1fd = 2; + field_0x1fe = 3; + field_0x1ff = 0; + field_0x200 = 0; + mist_tag_fog_near = -2000.0f; + mist_tag_fog_far = 200.0f; + wipe_test_ON = 0xff; + field_0x210 = 0.0f; + fade_test_speed = 0; + field_0x215 = 1; + smell_railtag_space = 0.0f; + field_0x22a = 0; + field_0x22c = 0; + field_0x22d = 0; + light_adjust_ON = 0; + adjust_light_ambcol.r = 24; + adjust_light_ambcol.g = 24; + adjust_light_ambcol.b = 24; + adjust_light_dif0_col_R = 126; + adjust_light_dif0_col_G = 110; + adjust_light_dif0_col_B = 89; + adjust_light_dif1_col.r = 24; + adjust_light_dif1_col.g = 41; + adjust_light_dif1_col.b = 50; + adjust_light_main_pos.x = 500.0f; + adjust_light_main_pos.y = 500.0f; + adjust_light_main_pos.z = 500.0f; + mist_twilight_c1_col.r = 182; + mist_twilight_c1_col.g = 88; + mist_twilight_c1_col.b = 50; + mist_twilight_c1_col.a = 150; + mist_twilight_c2_col.r = 117; + mist_twilight_c2_col.g = 69; + mist_twilight_c2_col.b = 50; + mist_twilight_c2_col.a = 255; + field_0x264.r = 124; + field_0x264.g = 60; + field_0x264.b = 50; + field_0x267 = 255; + field_0x268 = 150; + adjust_custom_R = 70; + adjust_custom_G = 70; + adjust_custom_B = 70; + adjust_light_mode = 1; + adjust_height = 0.0f; + field_0x278 = 120.0f; + shadow_adjust_ON = 0; + shadow_normal_alpha = 0.4f; + shadow_max_alpha = 0.65f; + field_0x29c = 0; + field_0x27c = 70.0f; + field_0x280 = 0.05f; + field_0x284 = 1.5f; + field_0x288 = 0.00025f; + field_0x28c = 0.001f; + unk_color_1.r = 255; + unk_color_1.g = 255; + unk_color_1.b = 255; + unk_alpha_1 = 255; + unk_color_2.r = 0; + unk_color_2.g = 0; + unk_color_2.b = 0; + unk_alpha_2 = 255; + unk_color_3.r = 60; + unk_color_3.g = 30; + unk_color_3.b = 0; + unk_alpha_3 = 255; + field_0x29d = 1; + camera_light_col.r = 25; + camera_light_col.g = 90; + camera_light_col.b = 183; + camera_light_alpha = 255; + camera_light_y_shift = 1500.0f; + camera_light_power = 1.25f; + camera_light_cutoff = 90.0f; + camera_light_sp = 2; + camera_light_da = 3; + demo_adjust_SW = 0; + demo_focus_pos = 30; + demo_focus_offset_x = 0.0025f; + demo_focus_offset_y = 0.0025f; + grass_ambcol.r = 0; + grass_ambcol.g = 0; + grass_ambcol.b = 0; + grass_adjust_ON = 0; + grass_shine_value = 0.0f; + stars_max_number = 0xffff; + display_save_location = 0; + unk_light_influence_ratio = 100; + door_light_influence_ratio = 255; + fish_pond_colreg_adjust_ON = 0; + fish_pond_colreg_c0.r = 0; + fish_pond_colreg_c0.g = 0; + fish_pond_colreg_c0.b = 0; + water_mud_adjust_ON = 0; + field_0x2ea = 0; + field_0x2ec = 0; + fish_pond_tree_adjust_ON = 0; + fish_pond_tree_ambcol.r = 0; + fish_pond_tree_ambcol.g = 0; + fish_pond_tree_ambcol.b = 0; + fish_pond_tree_dif0_col.r = 0; + fish_pond_tree_dif0_col.g = 0; + fish_pond_tree_dif0_col.b = 0; + fish_pond_tree_dif1_col.r = 0; + fish_pond_tree_dif1_col.g = 0; + fish_pond_tree_dif1_col.b = 0; + rainbow_adjust_ON = 0; + rainbow_separation_dist = 4500; + rainbow_max_alpha = 175; + field_0x2ff = 0; + grass_light_influence_ratio = 100; + grass_light_debug = 0; + field_0x302 = 2000; + field_0x304 = 0.6f; + field_0x308 = 0; + moya_col.r = 255; + moya_col.g = 255; + moya_col.b = 255; + field_0x30d = 0; + twilight_sense_saturation_mode = 0; + twilight_sense_pat = 0; + twilight_sense_pat_tv_display_ON = 0; + camera_light_adjust_ON = 0; + possessed_zelda_light_col.r = 30; + possessed_zelda_light_col.g = 55; + possessed_zelda_light_col.b = 110; + possessed_zelda_light_alpha = 255; + possessed_zelda_light_height = -800.0f; + possessed_zelda_light_power = 250.0f; + beast_ganon_light_col.r = 60; + beast_ganon_light_col.g = 95; + beast_ganon_light_col.b = 100; + beast_ganon_light_alpha = 255; + beast_ganon_light_height = -800.0f; + beast_ganon_light_power = 150.0f; + water_in_light_col.r = 138; + water_in_light_col.g = 192; + water_in_light_col.b = 188; +} + +#pragma mark AI +#include +u32 AIGetDSPSampleRate(void) { + puts("AIGetDSPSampleRate is a stub"); + return 48000; // Default sample rate? +} + +void AIInit(u8* stack) { + puts("AIInit is a stub"); + // This function initializes the AI system, but we don't have any specific implementation here. + // In a real scenario, it would set up the audio interface and prepare it for use. +} + +void AIInitDMA(u32 start_addr, u32 length) { + puts("AIInitDMA is a stub"); +} + +AIDCallback AIRegisterDMACallback(AIDCallback callback) { + puts("AIRegisterDMACallback is a stub"); + return callback; +} + +void AISetDSPSampleRate(u32 rate) { + // Should this link with the getsamplerate? this is very TODO + puts("AISetDSPSampleRate is a stub"); +} + +void AIStartDMA(void) { + puts("AIStartDMA is a stub"); +} + +void AIStopDMA(void) { + puts("AIStopDMA is a stub"); +} + +#pragma mark AR +#include + +// ARAM emulation: allocate a large buffer to simulate the GameCube's Auxiliary RAM. +// ARAM "addresses" are offsets into this buffer. On GameCube, ARAM is 16 MB starting +// at a base address returned by ARInit. We emulate this by malloc'ing a 16 MB buffer +// and using a simple bump allocator (matching ARAlloc behavior on real hardware). +static const u32 ARAM_EMU_SIZE = 16 * 1024 * 1024; // 16 MB (GameCube ARAM size) +static u8* sAramBuffer = nullptr; +static u32 sAramAllocPtr = 0; // bump allocator offset into sAramBuffer + +// Convert an ARAM "address" (offset) to a real host pointer +static u8* aramToHost(u32 aramAddr) { + if (!sAramBuffer || aramAddr >= ARAM_EMU_SIZE) { + return nullptr; + } + return sAramBuffer + aramAddr; +} + +u32 ARAlloc(u32 length) { + // Simple bump allocator (matching GameCube behavior - ARAlloc never frees) + u32 addr = sAramAllocPtr; + sAramAllocPtr += (length + 31) & ~31; // 32-byte align + if (sAramAllocPtr > ARAM_EMU_SIZE) { + OSReport("[ARAM] ERROR: ARAlloc overflow! Requested %u, used %u/%u\n", + length, sAramAllocPtr, ARAM_EMU_SIZE); + return 0; + } + OSReport("[ARAM] ARAlloc(%u) -> 0x%08X\n", length, addr); + return addr; +} + +u32 ARGetSize(void) { + return ARAM_EMU_SIZE; +} + +u32 ARInit(u32* stack_index_addr, u32 num_entries) { + if (!sAramBuffer) { + sAramBuffer = (u8*)malloc(ARAM_EMU_SIZE); + if (sAramBuffer) { + memset(sAramBuffer, 0, ARAM_EMU_SIZE); + OSReport("[ARAM] Initialized %u bytes of emulated ARAM\n", ARAM_EMU_SIZE); + } else { + OSReport("[ARAM] FATAL: Failed to allocate ARAM emulation buffer!\n"); + } + } + // Return base address (start of usable ARAM, after stack entries) + sAramAllocPtr = 0; + return 0; +} + +#pragma mark ARQ +void ARQPostRequest(ARQRequest* request, u32 owner, u32 type, u32 priority, uintptr_t source, uintptr_t dest, + u32 length, ARQCallback callback) { + // Emulate ARAM DMA transfers using memcpy. + // type 0 = MRAM -> ARAM, type 1 = ARAM -> MRAM + if (type == ARAM_DIR_MRAM_TO_ARAM) { + // Main RAM -> ARAM: source is a host pointer (cast to u32), dest is an ARAM offset + u8* hostSrc = (u8*)(uintptr_t)source; + u8* aramDst = aramToHost(dest); + if (aramDst && hostSrc) { + memcpy(aramDst, hostSrc, length); + } + } else { + // ARAM -> Main RAM: source is an ARAM offset, dest is a host pointer (cast to u32) + u8* aramSrc = aramToHost(source); + u8* hostDst = (u8*)(uintptr_t)dest; + if (aramSrc && hostDst) { + memcpy(hostDst, aramSrc, length); + } + } + + // Immediately invoke the callback (synchronous on PC, no DMA latency) + if (callback) { + callback((uintptr_t)request); + } +} + +void ARQInit() { + // Nothing to do on PC - ARAM is initialized in ARInit +} + +#pragma mark DVD +#include +s32 DVDCancel(volatile DVDCommandBlock* block) { + puts("DVDCancel is a stub"); + return 0; +} +s32 DVDCancel(DVDCommandBlock* block) { + puts("DVDCancel is a stub"); + return 0; +} +BOOL DVDChangeDir(const char* dirName) { + puts("DVDChangeDir is a stub"); + return TRUE; +} +BOOL DVDCheckDisk(void) { + puts("DVDCheckDisk is a stub"); + return TRUE; +} +BOOL DVDClose(DVDFileInfo* fileInfo) { + puts("DVDClose is a stub"); + return TRUE; +} +int DVDCloseDir(DVDDir* dir) { + puts("DVDCloseDir is a stub"); + return 0; +} +s32 DVDConvertPathToEntrynum(const char* pathPtr) { + return DVDConvertPathToEntrynum_Emu(pathPtr); +} +BOOL DVDFastOpen(s32 entrynum, DVDFileInfo* fileInfo) { + const char* path = DVDGetPathForEntry(entrynum); + if (!path) { + OSReport("[DVD] DVDFastOpen: no path for entry %d\n", entrynum); + return FALSE; + } + u32 fileSize = DvdEmu::getFileSize(path); + if (fileSize == 0) { + OSReport("[DVD] DVDFastOpen: file not found or empty for entry %d (%s)\n", entrynum, path); + return FALSE; + } + // Repurpose startAddr to store entrynum for later DVDReadPrio lookups + fileInfo->startAddr = (u32)entrynum; + fileInfo->length = fileSize; + fileInfo->callback = NULL; + fileInfo->cb.state = 0; + return TRUE; +} +s32 DVDGetCommandBlockStatus(const DVDCommandBlock* block) { + puts("DVDGetCommandBlockStatus is a stub"); + return 0; +} +DVDDiskID* DVDGetCurrentDiskID(void) { + puts("DVDGetCurrentDiskID is a stub"); + return NULL; +} +s32 DVDGetDriveStatus(void) { + //puts("DVDGetDriveStatus is a stub"); + return 0; +} +void DVDInit(void) { + puts("DVDInit is a stub"); +} +BOOL DVDOpen(const char* fileName, DVDFileInfo* fileInfo) { + s32 entryNum = DVDConvertPathToEntrynum(fileName); + if (entryNum < 0) { + OSReport("[DVD] DVDOpen: file not found: %s\n", fileName); + return FALSE; + } + return DVDFastOpen(entryNum, fileInfo); +} +int DVDOpenDir(const char* dirName, DVDDir* dir) { + puts("DVDOpenDir is a stub"); + return 0; +} +BOOL DVDReadAsyncPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, + DVDCallback callback, s32 prio) { + // Synchronous read, then invoke callback with result + s32 entryNum = (s32)fileInfo->startAddr; + const char* path = DVDGetPathForEntry(entryNum); + if (!path) { + OSReport("[DVD] DVDReadAsyncPrio: no path for entry %d\n", entryNum); + if (callback) callback(-1, fileInfo); + return FALSE; + } + u32 bytesRead = DvdEmu::loadFileToBuffer(path, addr, (u32)length, (u32)offset); + if (callback) { + callback((s32)bytesRead, fileInfo); + } + return TRUE; +} +int DVDReadDir(DVDDir* dir, DVDDirEntry* dirent) { + puts("DVDReadDir is a stub"); + return 0; +} +s32 DVDReadPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, s32 prio) { + s32 entryNum = (s32)fileInfo->startAddr; + const char* path = DVDGetPathForEntry(entryNum); + if (!path) { + OSReport("[DVD] DVDReadPrio: no path for entry %d\n", entryNum); + return -1; + } + u32 bytesRead = DvdEmu::loadFileToBuffer(path, addr, (u32)length, (u32)offset); + return (s32)bytesRead; +} + +void DVDReadAbsAsyncForBS(void* a, struct bb2struct* b, int c, int d, void (*e)()) { + puts("DVDReadAbsAsyncForBS is a stub"); +} + +void DVDReadDiskID(void* a, DVDDiskID* b, void (*c)()) { + puts("DVDReadDiskID is a stub"); +} + +void DVDReset() { + puts("DVDReset is a stub"); +} + +#pragma mark GD +#include +#include +void GDFlushCurrToMem(void) { + puts("GDFlushCurrToMem is a stub"); +} +void GDInitGDLObj(GDLObj* dl, void* start, u32 length) { + puts("GDInitGDLObj is a stub"); +} +void GDOverflowed(void) { + puts("GDOverflowed is a stub"); +} +void GDPadCurr32(void) { + puts("GDPadCurr32 is a stub"); +} +void GDSetArray(GXAttr attr, void* base_ptr, u8 stride) { + puts("GDSetArray is a stub"); +} +void GDSetArrayRaw(GXAttr attr, u32 base_ptr_raw, u8 stride) { + puts("GDSetArrayRaw is a stub"); +} +void GDSetVtxDescv(const GXVtxDescList* attrPtr) { + puts("GDSetVtxDescv is a stub"); +} + +#pragma mark GX +#include + +// Dummy FIFO sink for direct GXWGFifo writes in J3D code (e.g. J3DFifo.h). +// On GameCube these write to the GX command processor at 0xCC008000. +// On PC, writes land here harmlessly and are discarded. +volatile PPCWGPipe GXWGFifo; + +// GXCmd/GXParam/GXMatrixIndex: low-level command FIFO functions used by J3D. +// Route through Aurora's software FIFO so display list data is actually recorded. +// +// We forward-declare Aurora's FIFO functions with explicit stdint types instead of +// including fifo.hpp, because the game's u32 (unsigned long) differs from Aurora's +// u32 (uint32_t = unsigned int on MSVC). Including fifo.hpp would resolve its u32 +// parameter types to the game's unsigned long (since game headers are included first +// and set the include guards), causing MSVC name mangling mismatches at link time. +namespace aurora::gfx::fifo { + void write_u8(uint8_t val); + void write_u16(uint16_t val); + void write_u32(uint32_t val); + void write_f32(float val); +} + +// Cast to stdint types: game headers define u32=unsigned long, but Aurora uses +// uint32_t=unsigned int. Both are 32-bit on Win32 but have different MSVC name mangling. +void GXCmd1u8(const u8 x) { aurora::gfx::fifo::write_u8(static_cast(x)); } +void GXCmd1u16(const u16 x) { aurora::gfx::fifo::write_u16(static_cast(x)); } +void GXCmd1u32(const u32 x) { aurora::gfx::fifo::write_u32(static_cast(x)); } + +void GXParam1u8(const u8 x) { aurora::gfx::fifo::write_u8(static_cast(x)); } +void GXParam1u16(const u16 x) { aurora::gfx::fifo::write_u16(static_cast(x)); } +void GXParam1u32(const u32 x) { aurora::gfx::fifo::write_u32(static_cast(x)); } +void GXParam1s8(const s8 x) { aurora::gfx::fifo::write_u8(static_cast(x)); } +void GXParam1s16(const s16 x) { aurora::gfx::fifo::write_u16(static_cast(x)); } +void GXParam1s32(const s32 x) { aurora::gfx::fifo::write_u32(static_cast(x)); } +void GXParam1f32(const f32 x) { aurora::gfx::fifo::write_f32(x); } +void GXParam3f32(const f32 x, const f32 y, const f32 z) { + aurora::gfx::fifo::write_f32(x); + aurora::gfx::fifo::write_f32(y); + aurora::gfx::fifo::write_f32(z); +} +void GXParam4f32(const f32 x, const f32 y, const f32 z, const f32 w) { + aurora::gfx::fifo::write_f32(x); + aurora::gfx::fifo::write_f32(y); + aurora::gfx::fifo::write_f32(z); + aurora::gfx::fifo::write_f32(w); +} + +void GXMatrixIndex1u8(const u8 x) { aurora::gfx::fifo::write_u8(static_cast(x)); } + +// Moved-in GX helpers and helpers for metrics/project +void __GXSetSUTexSize() { + puts("__GXSetSUTexSize is a stub"); +} +// __GXSetVAT, __GXSetVCD, __GXUpdateBPMask: now provided by Aurora's GXManage.cpp (fifo branch) + +void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1) { + // puts("GXSetGPMetric is a stub"); +} +void GXReadGPMetric(u32* cnt0, u32* cnt1) { + // puts("GXReadGPMetric is a stub"); +} +void GXClearGPMetric(void) { + // puts("GXClearGPMetric is a stub"); +} +void GXReadMemMetric(u32* cp_req, u32* tc_req, u32* cpu_rd_req, u32* cpu_wr_req, u32* dsp_req, + u32* io_req, u32* vi_req, u32* pe_req, u32* rf_req, u32* fi_req) { + // puts("GXReadMemMetric is a stub"); +} +void GXClearMemMetric(void) { + // puts("GXClearMemMetric is a stub"); +} +void GXClearVCacheMetric(void) { + // puts("GXClearVCacheMetric is a stub"); +} +void GXReadPixMetric(u32* top_pixels_in, u32* top_pixels_out, u32* bot_pixels_in, + u32* bot_pixels_out, u32* clr_pixels_in, u32* copy_clks) { + // puts("GXReadPixMetric is a stub"); +} +void GXClearPixMetric(void) { + // puts("GXClearPixMetric is a stub"); +} +void GXSetVCacheMetric(GXVCachePerf attr) { + // puts("GXSetVCacheMetric is a stub"); +} +void GXReadVCacheMetric(u32* check, u32* miss, u32* stall) { + // puts("GXReadVCacheMetric is a stub"); +} +void GXSetDrawSync(u16 token) { + // puts("GXSetDrawSync is a stub"); +} +GXDrawSyncCallback GXSetDrawSyncCallback(GXDrawSyncCallback cb) { + puts("GXSetDrawSyncCallback is a stub"); + return cb; +} +void GXDrawCylinder(u8 numEdges) { + puts("GXDrawCylinder is a stub"); +} +void GXWaitDrawDone(void) { + // puts("GXWaitDrawDone is a stub"); +} +void GXSetTevIndTile(GXTevStageID tev_stage, GXIndTexStageID ind_stage, u16 tilesize_s, + u16 tilesize_t, u16 tilespacing_s, u16 tilespacing_t, GXIndTexFormat format, + GXIndTexMtxID matrix_sel, GXIndTexBiasSel bias_sel, + GXIndTexAlphaSel alpha_sel) { + // TODO +} +void GXResetWriteGatherPipe(void) { + // puts("GXResetWriteGatherPipe is a stub"); +} + +void GXProject(f32 x, f32 y, f32 z, const f32 mtx[3][4], const f32* pm, const f32* vp, f32* sx, + f32* sy, f32* sz) { + Vec peye; + f32 xc; + f32 yc; + f32 zc; + f32 wc; + + peye.x = mtx[0][3] + ((mtx[0][2] * z) + ((mtx[0][0] * x) + (mtx[0][1] * y))); + peye.y = mtx[1][3] + ((mtx[1][2] * z) + ((mtx[1][0] * x) + (mtx[1][1] * y))); + peye.z = mtx[2][3] + ((mtx[2][2] * z) + ((mtx[2][0] * x) + (mtx[2][1] * y))); + if (pm[0] == 0.0f) { + xc = (peye.x * pm[1]) + (peye.z * pm[2]); + yc = (peye.y * pm[3]) + (peye.z * pm[4]); + zc = pm[6] + (peye.z * pm[5]); + wc = 1.0f / -peye.z; + } else { + xc = pm[2] + (peye.x * pm[1]); + yc = pm[4] + (peye.y * pm[3]); + zc = pm[6] + (peye.z * pm[5]); + wc = 1.0f; + } + *sx = (vp[2] / 2.0f) + (vp[0] + (wc * (xc * vp[2] / 2.0f))); + *sy = (vp[3] / 2.0f) + (vp[1] + (wc * (-yc * vp[3] / 2.0f))); + *sz = vp[5] + (wc * (zc * (vp[5] - vp[4]))); +} +void GXAbortFrame(void) { + puts("GXAbortFrame is a stub"); +} +// GXEnableTexOffsets: now provided by Aurora's GXGeometry.cpp (fifo branch) +OSThread* GXGetCurrentGXThread(void) { + puts("GXGetCurrentGXThread is a stub"); + return NULL; +} +void* GXGetFifoBase(const GXFifoObj* fifo) { + puts("GXGetFifoBase is a stub"); + return NULL; +} +u32 GXGetFifoSize(const GXFifoObj* fifo) { + puts("GXGetFifoSize is a stub"); + return 0; +} +u16 GXGetNumXfbLines(u16 efbHeight, f32 yScale) { + puts("GXGetNumXfbLines is a stub"); + return 0; +} +void GXGetViewportv(f32* vp) { + puts("GXGetViewportv is a stub"); +} +void GXGetScissor(u32* left, u32* top, u32* wd, u32* ht) { + puts("GXGetScissor is a stub"); +} +u32 GXGetTexObjTlut(const GXTexObj* tex_obj) { + puts("GXGetTexObjTlut is a stub"); + return 0; +} +f32 GXGetYScaleFactor(u16 efbHeight, u16 xfbHeight) { + puts("GXGetYScaleFactor is a stub"); + return 0.0f; +} + +void GXInitTexCacheRegion(GXTexRegion* region, u8 is_32b_mipmap, u32 tmem_even, + GXTexCacheSize size_even, u32 tmem_odd, GXTexCacheSize size_odd) { + puts("GXInitTexCacheRegion is a stub"); +} +// XXX, this should be some struct? +// GXRenderModeObj GXNtsc480IntDf; +//GXRenderModeObj GXNtsc480Int; +void GXPeekZ(u16 x, u16 y, u32* z) { + puts("GXPeekZ is a stub"); + *z = 0; +} +void GXReadXfRasMetric(u32* xf_wait_in, u32* xf_wait_out, u32* ras_busy, u32* clocks) { + puts("GXReadXfRasMetric is a stub"); + *xf_wait_in = 0; + *xf_wait_out = 0; + *ras_busy = 0; + *clocks = 0; +} + +void GXSetCopyClamp(GXFBClamp clamp) { + puts("GXSetCopyClamp is a stub"); +} +OSThread* GXSetCurrentGXThread(void) { + puts("GXSetCurrentGXThread is a stub"); + return NULL; +} + +void GXSetMisc(GXMiscToken token, u32 val) { + puts("GXSetMisc is a stub"); +} + +void GXSetProjectionv(const f32* ptr) { + puts("GXSetProjectionv is a stub"); +} +void GXSetVtxAttrFmtv(GXVtxFmt vtxfmt, const GXVtxAttrFmtList* list) { + puts("GXSetVtxAttrFmtv is a stub"); +} + +#pragma mark KPAD +// is this actually used? +extern "C" void KPADDisableDPD(s32) { + puts("KPADDisableDPD is a stub"); +} +extern "C" void KPADEnableDPD(s32) { + puts("KPADEnableDPD is a stub"); +} + +// LC (consolidated above) +void LCDisable(void) { + puts("LCDisable is a stub"); +} +void LCQueueWait(__REGISTER u32 len) { + puts("LCQueueWait is a stub"); +} +u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes) { + puts("LCStoreData is a stub"); + return 0; +} + +#pragma mark PPC Arch +// MSR stuff? +void PPCHalt() { + puts("PPCHalt is a stub"); +} + +extern "C" void PPCSync(void) { + // puts("PPCSync is a stub"); +} + +u32 PPCMfhid2() { + puts("PPCMfhid2 is a stub"); + return 0; +} + +u32 PPCMfmsr() { + puts("PPCMfmsr is a stub"); + return 0; +} + +void PPCMtmsr(u32 newMSR) { + puts("PPCMtmsr is a stub"); +} + +#pragma mark WPAD +// uh.. this is revolution include not dolphin? +typedef void (*WPADExtensionCallback)(s32 chan, s32 devType); +extern "C" WPADExtensionCallback WPADSetExtensionCallback(s32 chan, WPADExtensionCallback cb) { + puts("WPADSetExtensionCallback is a stub"); + return cb; +} + +#pragma mark GF +#include void GFSetZMode(u8 compare_enable, GXCompare func, u8 update_enable) { - puts("GFSetZMode is a stub"); + puts("GFSetZMode is a stub"); } - void GFSetGenMode2(u8 nTexGens, u8 nChans, u8 nTevs, u8 nInds, GXCullMode cm) { - puts("GFSetGenMode2 is a stub"); + puts("GFSetGenMode2 is a stub"); } - -void OSSwitchFiberEx(u32 a, u32 b, u32 c, u32 d, u32 e, u32 f) { - puts("OSSwitchFiberEx is a stub"); -} - void GFSetTevColorS10(GXTevRegID reg, GXColorS10 color) { - puts("GFSetTevColorS10 is a stub"); + puts("GFSetTevColorS10 is a stub"); } - -void GFSetBlendModeEtc(GXBlendMode type, GXBlendFactor src_factor, - GXBlendFactor dst_factor, GXLogicOp logic_op, - u8 color_update_enable, u8 alpha_update_enable, +void GFSetBlendModeEtc(GXBlendMode type, GXBlendFactor src_factor, GXBlendFactor dst_factor, + GXLogicOp logic_op, u8 color_update_enable, u8 alpha_update_enable, u8 dither_enable) { - puts("GFSetBlendModeEtc is a stub"); + puts("GFSetBlendModeEtc is a stub"); } - void GFSetChanAmbColor(GXChannelID chan, GXColor color) { - puts("GFSetChanAmbColor is a stub"); + puts("GFSetChanAmbColor is a stub"); } - -void J3DPSMtxArrayConcat(f32 (*a)[4], f32 (*b)[4], f32 (*c)[4], u32 d) { - puts("J3DPSMtxArrayConcat is a stub"); -} - -void __dcbz(void* a, int b) { - puts("__dcbz is a stub"); -} - void GFSetFog(GXFogType type, f32 startz, f32 endz, f32 nearz, f32 farz, GXColor color) { - puts("GFSetFog is a stub"); + puts("GFSetFog is a stub"); } -int __cntlzw(unsigned int a) { - puts("__cntlzw is a stub"); - return 0; +#pragma mark DEBUGPAD +#include +dDebugPad_c::dDebugPad_c() { + puts("constructing debug pad, stubbed?"); } -void* __memcpy(void* a, const void* b, int c) { - puts("__cntlzw is a stub"); - return NULL; +#pragma mark f_ap +#include +u8 fapGm_HIO_c::mCaptureScreenDivH = 1; + +#pragma mark dMsgObject +#include +void dMsgObject_c::setWord(const char* i_word) { + puts("dMsgObject_c::setWord is a stub"); +} +void dMsgObject_c::setSelectWord(int i_no, const char* i_word) { + puts("dMsgObject_c::setSelectWord is a stub"); } +#pragma mark HIO +#include +#include BOOL HIO2Close(s32 handle) { - puts("HIO2Close is a stub"); - return FALSE; + puts("HIO2Close is a stub"); + return FALSE; } BOOL HIO2EnumDevices(HIO2EnumCallback callback) { - puts("HIO2EnumDevices is a stub"); - return FALSE; + puts("HIO2EnumDevices is a stub"); + return FALSE; } BOOL HIO2Init(void) { - puts("HIO2Init is a stub"); - return FALSE; + puts("HIO2Init is a stub"); + return FALSE; } s32 HIO2Open(HIO2DeviceType type, HIO2UnkCallback exiCb, HIO2DisconnectCallback disconnectCb) { - puts("HIO2Open is a stub"); - return 0; + puts("HIO2Open is a stub"); + return 0; } BOOL HIO2Read(s32 handle, u32 addr, void* buffer, s32 size) { - puts("HIO2Read is a stub"); - return FALSE; + puts("HIO2Read is a stub"); + return FALSE; } BOOL HIO2Write(s32 handle, u32 addr, void* buffer, s32 size) { - puts("HIO2Write is a stub"); - return FALSE; + puts("HIO2Write is a stub"); + return FALSE; } BOOL HIORead(u32 addr, void* buffer, s32 size) { - puts("HIORead is a stub"); - return FALSE; + puts("HIORead is a stub"); + return FALSE; } BOOL HIOWrite(u32 addr, void* buffer, s32 size) { - puts("HIOWrite is a stub"); - return FALSE; + puts("HIOWrite is a stub"); + return FALSE; } + +#pragma mark JHICommBuf +#include +void JHICommBufHeader::init() { + puts("JHICommBufHeader::init is a stub"); +} + +int JHICommBufHeader::load() { + puts("JHICommBufHeader::load is a stub"); + return 0; +} + +int JHICommBufReader::read(void*, int) { + puts("JHICommBufReader::read is a stub"); + return 0; +} +void JHICommBufReader::readEnd() { + puts("JHICommBufReader::readEnd is a stub"); +} + +int JHICommBufReader::readBegin() { + puts("JHICommBufReader::readBegin is a stub"); + return 0; +} + +int JHICommBufWriter::writeBegin() { + puts("JHICommBufWriter::writeBegin is a stub"); + return 0; +} + +int JHICommBufWriter::write(void*, int) { + puts("JHICommBufWriter::write is a stub"); + return 0; +} + +void JHICommBufWriter::writeEnd() { + puts("JHICommBufWriter::writeEnd is a stub"); +} + +u32 JHICommBufReader::Header::getReadableSize() const { + puts("JHICommBufReader::Header::getReadableSize is a stub"); + return 0; +} + +#pragma mark dMeter2Info +#include +void dMeter2Info_c::getString(u32 i_stringID, char* o_string, JMSMesgEntry_c* i_msgEntry) { + puts("dMeter2Info_c::getString is a stub"); +} +void dMeter2Info_c::getStringKanji(u32 i_stringID, char* o_string, JMSMesgEntry_c* i_msgEntry) { + puts("dMeter2Info_c::getStringKanji is a stub"); +} + +dPa_particleTracePcallBack_c JPTracePCB4; \ No newline at end of file diff --git a/src/f_ap/f_ap_game.cpp b/src/f_ap/f_ap_game.cpp index b03bdc2561..2db1399d2b 100644 --- a/src/f_ap/f_ap_game.cpp +++ b/src/f_ap/f_ap_game.cpp @@ -720,11 +720,20 @@ void fapGm_After() { } void fapGm_Execute() { + static u32 sExecCount = 0; + if (sExecCount < 10 || (sExecCount % 300 == 0)) { + printf("[DIAG] fapGm_Execute frame=%d\n", sExecCount); + fflush(stdout); + } + sExecCount++; + #if DEBUG JUTDbPrint::getManager()->setCharColor(g_HIO.mColor); #endif - fpcM_Management(NULL, fapGm_After); + printf("[DIAG] fapGm_Execute: entering fpcM_Management...\n"); fflush(stdout); + fpcM_Management(NULL, fapGm_After); + printf("[DIAG] fapGm_Execute: fpcM_Management returned\n"); fflush(stdout); cCt_Counter(0); } diff --git a/src/f_op/f_op_msg_mng.cpp b/src/f_op/f_op_msg_mng.cpp index 9442a807a6..c0b6dd060a 100644 --- a/src/f_op/f_op_msg_mng.cpp +++ b/src/f_op/f_op_msg_mng.cpp @@ -248,7 +248,7 @@ u8 fopMsgM_itemNumIdx(u8 i_no) { return itemicon[i_no] & 0xFF; } -f32 dummy() { +static f32 dummy() { J2DPane* dummyPlane = NULL; dummyPlane->getAlpha(); dummyPlane->getHeight(); diff --git a/src/f_op/f_op_scene_mng.cpp b/src/f_op/f_op_scene_mng.cpp index ba1f322139..7f40ccd845 100644 --- a/src/f_op/f_op_scene_mng.cpp +++ b/src/f_op/f_op_scene_mng.cpp @@ -7,6 +7,7 @@ #include "JSystem/JUtility/JUTAssert.h" #include "f_op/f_op_scene_iter.h" #include "f_op/f_op_scene_req.h" +#include scene_class* fopScnM_SearchByID(fpc_ProcID id) { return (scene_class*)fopScnIt_Judge((fop_ScnItFunc)fpcSch_JudgeByID, &id); @@ -29,7 +30,10 @@ fpc_ProcID fopScnM_DeleteReq(scene_class* i_scene) { } int fopScnM_CreateReq(s16 i_procName, s16 param_2, u16 param_3, u32 i_data) { - return fopScnRq_Request(0, 0, i_procName, (void*)i_data, param_2, param_3) != fpcM_ERROR_PROCESS_ID_e; + printf("[DIAG] fopScnM_CreateReq: procName=%d fade=%d\n", i_procName, param_2); fflush(stdout); + fpc_ProcID result = fopScnRq_Request(0, 0, i_procName, (void*)i_data, param_2, param_3); + printf("[DIAG] fopScnM_CreateReq: result=%d (error=%d)\n", result, fpcM_ERROR_PROCESS_ID_e); fflush(stdout); + return result != fpcM_ERROR_PROCESS_ID_e; } u32 fopScnM_ReRequest(s16 i_procName, u32 i_data) { diff --git a/src/f_op/f_op_scene_req.cpp b/src/f_op/f_op_scene_req.cpp index 17dd3c4059..05a44e10f1 100644 --- a/src/f_op/f_op_scene_req.cpp +++ b/src/f_op/f_op_scene_req.cpp @@ -9,6 +9,7 @@ #include "f_op/f_op_scene_pause.h" #include "f_pc/f_pc_executor.h" #include "f_pc/f_pc_manager.h" +#include static cPhs_Step fopScnRq_phase_ClearOverlap(scene_request_class* i_sceneReq) { return fopOvlpM_ClearOfReq() == 1 ? cPhs_NEXT_e : cPhs_INIT_e; @@ -16,7 +17,13 @@ static cPhs_Step fopScnRq_phase_ClearOverlap(scene_request_class* i_sceneReq) { } static cPhs_Step fopScnRq_phase_Execute(scene_request_class* i_sceneReq) { - return fpcNdRq_Execute(&i_sceneReq->create_request); + static int sExecLogCount = 0; + cPhs_Step ret = (cPhs_Step)fpcNdRq_Execute(&i_sceneReq->create_request); + if (sExecLogCount < 30) { + printf("[DIAG] fopScnRq_phase_Execute: ret=%d name=%d\n", ret, i_sceneReq->create_request.name); fflush(stdout); + sExecLogCount++; + } + return ret; } static cPhs_Step fopScnRq_phase_IsDoingOverlap(scene_request_class* i_sceneReq) { diff --git a/src/f_pc/f_pc_base.cpp b/src/f_pc/f_pc_base.cpp index 36af52f905..8e2e3f6a5e 100644 --- a/src/f_pc/f_pc_base.cpp +++ b/src/f_pc/f_pc_base.cpp @@ -14,6 +14,7 @@ #include "f_pc/f_pc_profile.h" #include "f_pc/f_pc_debug_sv.h" #include "Z2AudioLib/Z2AudioMgr.h" +#include BOOL fpcBs_Is_JustOfType(int i_typeA, int i_typeB) { if (i_typeB == i_typeA) { @@ -118,10 +119,13 @@ base_process_class* fpcBs_Create(s16 i_profname, fpc_ProcID i_procID, void* i_ap u32 size; pprofile = (process_profile_definition*)fpcPf_Get(i_profname); + printf("[DIAG] fpcBs_Create: profname=%d profile=%p procSize=%d unkSize=%d\n", + i_profname, pprofile, pprofile->process_size, pprofile->unk_size); fflush(stdout); size = pprofile->process_size + pprofile->unk_size; pprocess = (base_process_class*)cMl::memalignB(-4, size); if (pprocess == NULL) { + printf("[DIAG] fpcBs_Create: memalignB FAILED for size=%u\n", size); fflush(stdout); return NULL; } diff --git a/src/f_pc/f_pc_create_req.cpp b/src/f_pc/f_pc_create_req.cpp index 5e54f21ea4..3ea29645ae 100644 --- a/src/f_pc/f_pc_create_req.cpp +++ b/src/f_pc/f_pc_create_req.cpp @@ -11,6 +11,7 @@ #include "f_pc/f_pc_executor.h" #include "f_pc/f_pc_layer.h" #include "f_pc/f_pc_debug_sv.h" +#include BOOL fpcCtRq_isCreatingByID(create_tag* i_createTag, fpc_ProcID* i_id) { fpc_ProcID id = ((create_request*)i_createTag->base.mpTagData)->id; @@ -91,6 +92,12 @@ BOOL fpcCtRq_Do(create_request* i_request) { } } + static int sCtRqDoLogCount = 0; + if (sCtRqDoLogCount < 30) { + printf("[DIAG] fpcCtRq_Do: phase=%d process=%p\n", phase, i_request->process); fflush(stdout); + sCtRqDoLogCount++; + } + switch (phase) { case cPhs_COMPLEATE_e: { if (fpcEx_ToExecuteQ(i_request->process) == 0) diff --git a/src/f_pc/f_pc_draw.cpp b/src/f_pc/f_pc_draw.cpp index 5a5b220f82..0a3162793a 100644 --- a/src/f_pc/f_pc_draw.cpp +++ b/src/f_pc/f_pc_draw.cpp @@ -8,6 +8,7 @@ #include "f_pc/f_pc_leaf.h" #include "f_pc/f_pc_node.h" #include "f_pc/f_pc_pause.h" +#include int fpcDw_Execute(base_process_class* i_proc) { if (!fpcPause_IsEnable(i_proc, 2)) { @@ -32,9 +33,15 @@ int fpcDw_Execute(base_process_class* i_proc) { } int fpcDw_Handler(fpcDw_HandlerFuncFunc i_iterHandler, fpcDw_HandlerFunc i_func) { + static int sDwLogCount = 0; int ret; + if (sDwLogCount < 5) { printf("[DIAG] fpcDw_Handler: before BeforeOfDraw\n"); fflush(stdout); } cAPIGph_BeforeOfDraw(); + if (sDwLogCount < 5) { printf("[DIAG] fpcDw_Handler: before draw iteration\n"); fflush(stdout); } ret = i_iterHandler(i_func); + if (sDwLogCount < 5) { printf("[DIAG] fpcDw_Handler: before AfterOfDraw\n"); fflush(stdout); } cAPIGph_AfterOfDraw(); + if (sDwLogCount < 5) { printf("[DIAG] fpcDw_Handler: done\n"); fflush(stdout); } + sDwLogCount++; return ret; } diff --git a/src/f_pc/f_pc_manager.cpp b/src/f_pc/f_pc_manager.cpp index 612c4d9a6e..1ecb2b7473 100644 --- a/src/f_pc/f_pc_manager.cpp +++ b/src/f_pc/f_pc_manager.cpp @@ -20,6 +20,7 @@ #include "f_pc/f_pc_pause.h" #include "f_pc/f_pc_priority.h" #include "m_Do/m_Do_controller_pad.h" +#include void fpcM_Draw(void* i_proc) { fpcDw_Execute((base_process_class*)i_proc); @@ -42,16 +43,26 @@ BOOL fpcM_IsCreating(fpc_ProcID i_id) { } void fpcM_Management(fpcM_ManagementFunc i_preExecuteFn, fpcM_ManagementFunc i_postExecuteFn) { + static int sMgmtLogCount = 0; + MtxInit(); if (!fapGm_HIO_c::isCaptureScreen()) { dComIfGd_peekZdata(); } fapGm_HIO_c::executeCaptureScreen(); - if (!dShutdownErrorMsg_c::execute()) { + bool shutdownRet = dShutdownErrorMsg_c::execute(); + if (sMgmtLogCount < 10) { + printf("[DIAG] fpcM_Management: shutdown=%d\n", shutdownRet); fflush(stdout); + } + if (!shutdownRet) { static bool l_dvdError = false; - if (!dDvdErrorMsg_c::execute()) { + bool dvdErrRet = dDvdErrorMsg_c::execute(); + if (sMgmtLogCount < 10) { + printf("[DIAG] fpcM_Management: dvdError=%d\n", dvdErrRet); fflush(stdout); + } + if (!dvdErrRet) { if (l_dvdError) { dLib_time_c::startTime(); Z2GetSoundMgr()->pauseAllGameSound(false); @@ -60,36 +71,55 @@ void fpcM_Management(fpcM_ManagementFunc i_preExecuteFn, fpcM_ManagementFunc i_p cAPIGph_Painter(); + if (sMgmtLogCount < 10) { printf("[DIAG] fpcM_Management: after cAPIGph_Painter\n"); fflush(stdout); } + if (!dPa_control_c::isStatus(1)) { fpcDt_Handler(); } else { dPa_control_c::offStatus(1); } + if (sMgmtLogCount < 10) { printf("[DIAG] fpcM_Management: after fpcDt_Handler\n"); fflush(stdout); } + if (!fpcPi_Handler()) { JUT_ASSERT(353, FALSE); } + if (sMgmtLogCount < 10) { printf("[DIAG] fpcM_Management: after fpcPi_Handler\n"); fflush(stdout); } + if (!fpcCt_Handler()) { JUT_ASSERT(357, FALSE); } + if (sMgmtLogCount < 10) { printf("[DIAG] fpcM_Management: after fpcCt_Handler\n"); fflush(stdout); } + if (i_preExecuteFn != NULL) { i_preExecuteFn(); } + if (sMgmtLogCount < 10) { printf("[DIAG] fpcM_Management: after preExecute\n"); fflush(stdout); } + if (!fapGm_HIO_c::isCaptureScreen()) { fpcEx_Handler((fpcLnIt_QueueFunc)fpcM_Execute); } + + if (sMgmtLogCount < 10) { printf("[DIAG] fpcM_Management: after fpcEx_Handler\n"); fflush(stdout); } + if (!fapGm_HIO_c::isCaptureScreen() || fapGm_HIO_c::getCaptureScreenDivH() != 1) { fpcDw_Handler((fpcDw_HandlerFuncFunc)fpcM_DrawIterater, (fpcDw_HandlerFunc)fpcM_Draw); } + if (sMgmtLogCount < 10) { printf("[DIAG] fpcM_Management: after fpcDw_Handler\n"); fflush(stdout); } + if (i_postExecuteFn != NULL) { + if (sMgmtLogCount < 10) { + printf("[DIAG] fpcM_Management: calling postExecuteFn (fapGm_After)\n"); fflush(stdout); + } i_postExecuteFn(); } dComIfGp_drawSimpleModel(); + sMgmtLogCount++; } else if (!l_dvdError) { dLib_time_c::stopTime(); Z2GetSoundMgr()->pauseAllGameSound(true); diff --git a/src/f_pc/f_pc_node_req.cpp b/src/f_pc/f_pc_node_req.cpp index 34be4b85ff..7ecf1ea7e1 100644 --- a/src/f_pc/f_pc_node_req.cpp +++ b/src/f_pc/f_pc_node_req.cpp @@ -12,6 +12,7 @@ #include "f_pc/f_pc_stdcreate_req.h" #include "f_pc/f_pc_manager.h" #include "f_pc/f_pc_debug_sv.h" +#include void fpcNdRq_RequestQTo(node_create_request* i_request) { fpcLy_CreatedMesg(i_request->layer); @@ -47,10 +48,12 @@ int fpcNdRq_phase_IsCreated(node_create_request* i_request) { } int fpcNdRq_phase_Create(node_create_request* i_request) { + printf("[DIAG] fpcNdRq_phase_Create: name=%d layer=%p\n", i_request->name, i_request->layer); fflush(stdout); i_request->creating_id = fpcSCtRq_Request(i_request->layer, i_request->name, (stdCreateFunc)i_request->create_req_methods->post_method, i_request, i_request->data); + printf("[DIAG] fpcNdRq_phase_Create: creating_id=%d (error=%d)\n", i_request->creating_id, fpcM_ERROR_PROCESS_ID_e); fflush(stdout); if (i_request->creating_id == fpcM_ERROR_PROCESS_ID_e) { return cPhs_UNK3_e; } @@ -140,6 +143,12 @@ int fpcNdRq_Cancel(node_create_request* i_request) { int fpcNdRq_Handler() { node_class* node = l_fpcNdRq_Queue.mpHead; + static int sNdRqLogCount = 0; + if (l_fpcNdRq_Queue.mSize > 0 && sNdRqLogCount < 30) { + printf("[DIAG] fpcNdRq_Handler: queue size=%d\n", l_fpcNdRq_Queue.mSize); fflush(stdout); + sNdRqLogCount++; + } + #if DEBUG if (g_fpcDbSv_service[9] != NULL) { g_fpcDbSv_service[9](&l_fpcNdRq_Queue.mSize); diff --git a/src/f_pc/f_pc_profile.cpp b/src/f_pc/f_pc_profile.cpp index 4a4f9a1d8b..e6d2933ada 100644 --- a/src/f_pc/f_pc_profile.cpp +++ b/src/f_pc/f_pc_profile.cpp @@ -5,7 +5,16 @@ #include "f_pc/f_pc_profile.h" + +#ifndef __MWERKS__ +// Forward declare the static list from f_pc_profile_lst.cpp +extern process_profile_definition* g_fpcPfLst_ProfileList[]; +// On PC: Direct pointer to static array +process_profile_definition** g_fpcPf_ProfileList_p = g_fpcPfLst_ProfileList; +#else +// On Console: Pointer initialized by REL module prolog process_profile_definition** g_fpcPf_ProfileList_p; +#endif process_profile_definition* fpcPf_Get(s16 i_profname) { int index = i_profname; diff --git a/src/f_pc/f_pc_profile_lst.cpp b/src/f_pc/f_pc_profile_lst.cpp index 2ccc40684d..b55847533c 100644 --- a/src/f_pc/f_pc_profile_lst.cpp +++ b/src/f_pc/f_pc_profile_lst.cpp @@ -5,6 +5,8 @@ #include "f_pc/f_pc_profile_lst.h" + +#ifdef __MWERKS__ process_profile_definition* g_fpcPfLst_ProfileList[] = { &g_profile_OVERLAP0, &g_profile_OVERLAP1, @@ -800,7 +802,6 @@ process_profile_definition* g_fpcPfLst_ProfileList[] = { &g_profile_GAMEOVER, NULL, }; - extern "C" void ModuleProlog() { g_fpcPf_ProfileList_p = g_fpcPfLst_ProfileList; } @@ -808,3 +809,801 @@ extern "C" void ModuleProlog() { extern "C" void ModuleEpilog() { g_fpcPf_ProfileList_p = NULL; } + +#else +process_profile_definition* g_fpcPfLst_ProfileList[] = { + &g_profile_OVERLAP0.base.base, + &g_profile_OVERLAP1.base.base, + &g_profile_OVERLAP3.base.base, + &g_profile_OVERLAP6.base.base, + &g_profile_OVERLAP7.base.base, + &g_profile_OVERLAP8.base.base, + &g_profile_OVERLAP9.base.base, + &g_profile_OVERLAP10.base.base, + &g_profile_OVERLAP11.base.base, + &g_profile_LOGO_SCENE.base.base, + &g_profile_MENU_SCENE.base.base, + &g_profile_PLAY_SCENE.base.base, + &g_profile_OPENING_SCENE.base.base, + &g_profile_NAME_SCENE.base.base, + &g_profile_NAMEEX_SCENE.base.base, + &g_profile_WARNING_SCENE.base.base, + &g_profile_WARNING2_SCENE.base.base, + &g_profile_OVERLAP2.base.base, + &g_profile_ROOM_SCENE.base.base, + &g_profile_KANKYO.base.base, + &g_profile_ALLDIE.base.base, + &g_profile_ENVSE.base.base, + &g_profile_Obj_Swpush.base.base, + &g_profile_Obj_Swpush2.base.base, + &g_profile_Obj_Swpush5.base.base, + &g_profile_Tag_Gstart.base.base, + &g_profile_NO_CHG_ROOM.base.base, + &g_profile_Obj_Lv6ElevtA.base.base, + &g_profile_OBJ_SO.base.base, + &g_profile_Obj_Movebox.base.base, + &g_profile_Obj_SwTurn.base.base, + &g_profile_Obj_Lv6SwTurn.base.base, + &g_profile_OBJ_SEKIZOA.base.base, + &g_profile_OBJ_GRA.base.base, + &g_profile_TAG_GRA.base.base, + &g_profile_TAG_YAMI.base.base, + &g_profile_Obj_Ladder.base.base, + &g_profile_OBJ_BEF.base.base, + &g_profile_OBJ_FMOBJ.base.base, + &g_profile_OBJ_LBOX.base.base, + &g_profile_OBJ_WEB0.base.base, + &g_profile_OBJ_WEB1.base.base, + &g_profile_OBJ_CB.base.base, + &g_profile_OBJ_MAKI.base.base, + &g_profile_OBJ_BRG.base.base, + &g_profile_OBJ_GB.base.base, + &g_profile_OBJ_GM.base.base, + &g_profile_OBJ_TOBY.base.base, + &g_profile_OBJ_TP.base.base, + &g_profile_TREESH.base.base, + &g_profile_Obj_ZDoor.base.base, + &g_profile_Obj_Pillar.base.base, + &g_profile_Obj_Cdoor.base.base, + &g_profile_GRDWATER.base.base, + &g_profile_Obj_RotBridge.base.base, + &g_profile_Obj_MagLift.base.base, + &g_profile_Obj_MagLiftRot.base.base, + &g_profile_Obj_Lv1Cdl00.base.base, + &g_profile_Obj_Lv1Cdl01.base.base, + &g_profile_Obj_TvCdlst.base.base, + &g_profile_Obj_HsTarget.base.base, + &g_profile_Obj_HeavySw.base.base, + &g_profile_Obj_GoGate.base.base, + &g_profile_Obj_TaFence.base.base, + &g_profile_Obj_Saidan.base.base, + &g_profile_Obj_SpinLift.base.base, + &g_profile_Obj_BmWindow.base.base, + &g_profile_Obj_RfHole.base.base, + &g_profile_Obj_WaterPillar.base.base, + &g_profile_Obj_SyRock.base.base, + &g_profile_Obj_BsGate.base.base, + &g_profile_Obj_AmiShutter.base.base, + &g_profile_Obj_WtGate.base.base, + &g_profile_Obj_Lv2Candle.base.base, + &g_profile_Obj_TogeTrap.base.base, + &g_profile_Obj_RotTrap.base.base, + &g_profile_Obj_SwallShutter.base.base, + &g_profile_Obj_IceWall.base.base, + &g_profile_Obj_Lv5SwIce.base.base, + &g_profile_Obj_Lv5FBoard.base.base, + &g_profile_Obj_Turara.base.base, + &g_profile_Obj_TwGate.base.base, + &g_profile_Obj_Digholl.base.base, + &g_profile_Obj_Digpl.base.base, + &g_profile_Obj_TestCube.base.base, + &g_profile_Obj_Kshutter.base.base, + &g_profile_NPC_COACH.base.base, + &g_profile_NPC_THEB.base.base, + &g_profile_COACH_FIRE.base.base, + &g_profile_COACH2D.base.base, + &g_profile_BALLOON2D.base.base, + &g_profile_SKIP2D.base.base, + &g_profile_Obj_MvStair.base.base, + &g_profile_Obj_Cowdoor.base.base, + &g_profile_Obj_Swpropeller.base.base, + &g_profile_Obj_BoomShutter.base.base, + &g_profile_NPC_KS.base.base, + &g_profile_Obj_Hfuta.base.base, + &g_profile_Obj_BkDoor.base.base, + &g_profile_Obj_Cboard.base.base, + &g_profile_Obj_MGate.base.base, + &g_profile_Obj_Ikada.base.base, + &g_profile_Obj_Ice_l.base.base, + &g_profile_Obj_Ice_s.base.base, + &g_profile_Obj_E_CREATE.base.base, + &g_profile_Obj_Bhbridge.base.base, + &g_profile_Obj_Kaisou.base.base, + &g_profile_Obj_HHASHI.base.base, + &g_profile_Obj_BHASHI.base.base, + &g_profile_OCTHASHI.base.base, + &g_profile_Obj_THASHI.base.base, + &g_profile_Obj_CRVGATE.base.base, + &g_profile_Obj_CRVFENCE.base.base, + &g_profile_Obj_CRVHAHEN.base.base, + &g_profile_Obj_CRVSTEEL.base.base, + &g_profile_Obj_CRVLH_UP.base.base, + &g_profile_Obj_CRVLH_DW.base.base, + &g_profile_Obj_RIVERROCK.base.base, + &g_profile_Obj_DUST.base.base, + &g_profile_Obj_ITA.base.base, + &g_profile_Obj_Window.base.base, + &g_profile_Obj_MetalBox.base.base, + &g_profile_Obj_BBox.base.base, + &g_profile_OBJ_MSIMA.base.base, + &g_profile_OBJ_MYOGAN.base.base, + &g_profile_B_ZANTS.base.base, + &g_profile_Obj_ChainBlock.base.base, + &g_profile_Obj_ChainWall.base.base, + &g_profile_Obj_KkrGate.base.base, + &g_profile_Obj_RiderGate.base.base, + &g_profile_Obj_Onsen.base.base, + &g_profile_Obj_Chest.base.base, + &g_profile_Obj_Bemos.base.base, + &g_profile_Obj_RopeBridge.base.base, + &g_profile_Obj_WellCover.base.base, + &g_profile_Obj_GraveStone.base.base, + &g_profile_Obj_ZraRock.base.base, + &g_profile_Obj_GraRock.base.base, + &g_profile_Obj_GrzRock.base.base, + &g_profile_GRA_WALL.base.base, + &g_profile_OBJ_ONSEN_FIRE.base.base, + &g_profile_Obj_Lv6bemos.base.base, + &g_profile_Obj_Lv6bemos2.base.base, + &g_profile_Obj_BarDesk.base.base, + &g_profile_Obj_DigSnow.base.base, + &g_profile_Obj_Ytaihou.base.base, + &g_profile_Obj_Elevator.base.base, + &g_profile_Obj_Lv6TogeRoll.base.base, + &g_profile_Obj_Lv6TogeTrap.base.base, + &g_profile_Obj_Lv6Tenbin.base.base, + &g_profile_Obj_Lv6SwGate.base.base, + &g_profile_Obj_Lv6Lblock.base.base, + &g_profile_Obj_Lv6ChgGate.base.base, + &g_profile_Obj_Lv6FuriTrap.base.base, + &g_profile_Obj_Lv6SzGate.base.base, + &g_profile_Obj_Lv4EdShutter.base.base, + &g_profile_Obj_Lv4Gate.base.base, + &g_profile_Obj_Lv4PoGate.base.base, + &g_profile_Obj_Lv4SlideWall.base.base, + &g_profile_Obj_Lv4HsTarget.base.base, + &g_profile_Obj_Lv7PropY.base.base, + &g_profile_Obj_Lv7BsGate.base.base, + &g_profile_Obj_Lv8OptiLift.base.base, + &g_profile_Obj_Lv8KekkaiTrap.base.base, + &g_profile_Obj_Lv8Lift.base.base, + &g_profile_Obj_Lv8UdFloor.base.base, + &g_profile_Obj_Lv9SwShutter.base.base, + &g_profile_Obj_TobyHouse.base.base, + &g_profile_Obj_poCandle.base.base, + &g_profile_Obj_Lv4DigSand.base.base, + &g_profile_Obj_FallObj.base.base, + &g_profile_Obj_SmgDoor.base.base, + &g_profile_Obj_SwLight.base.base, + &g_profile_Obj_Avalanche.base.base, + &g_profile_Obj_MirrorScrew.base.base, + &g_profile_Obj_MirrorSand.base.base, + &g_profile_Obj_MirrorTable.base.base, + &g_profile_Obj_MirrorChain.base.base, + &g_profile_Obj_Mirror6Pole.base.base, + &g_profile_Obj_SwSpinner.base.base, + &g_profile_Obj_TDoor.base.base, + &g_profile_Obj_Lv7Bridge.base.base, + &g_profile_Obj_zrTurara.base.base, + &g_profile_Obj_TakaraDai.base.base, + &g_profile_Obj_Table.base.base, + &g_profile_Obj_CatDoor.base.base, + &g_profile_Obj_Gake.base.base, + &g_profile_CSTAF.base.base, + &g_profile_Obj_Lv4RailWall.base.base, + &g_profile_Obj_Lv4Sand.base.base, + &g_profile_Obj_PushDoor.base.base, + &g_profile_PushDoor.base.base, + &g_profile_Obj_GanonWall2.base.base, + &g_profile_Obj_Lv4Bridge.base.base, + &g_profile_Obj_Lv4Floor.base.base, + &g_profile_Tag_Spinner.base.base, + &g_profile_Obj_SwHang.base.base, + &g_profile_Obj_RotStair.base.base, + &g_profile_Obj_MagneArm.base.base, + &g_profile_Obj_KWheel00.base.base, + &g_profile_Obj_KWheel01.base.base, + &g_profile_Obj_Ychndlr.base.base, + &g_profile_Obj_PRElvtr.base.base, + &g_profile_Obj_MHasu.base.base, + &g_profile_Obj_YIblltray.base.base, + &g_profile_Obj_Lv6EGate.base.base, + &g_profile_Obj_PDtile.base.base, + &g_profile_Obj_PDwall.base.base, + &g_profile_Obj_Lv4PRwall.base.base, + &g_profile_Obj_KLift00.base.base, + &g_profile_B_OH.base.base, + &g_profile_Obj_Lv4Chan.base.base, + &g_profile_Obj_Lv3R10Saka.base.base, + &g_profile_Obj_Lv3Water.base.base, + &g_profile_Obj_Lv3Water2.base.base, + &g_profile_OBJ_LV3WATERB.base.base, + &g_profile_Obj_HBombkoya.base.base, + &g_profile_Obj_SZbridge.base.base, + &g_profile_Obj_KakarikoBrg.base.base, + &g_profile_Obj_OrdinBrg.base.base, + &g_profile_Obj_BurnBox.base.base, + &g_profile_Obj_KJgjs.base.base, + &g_profile_OBJ_IHASI.base.base, + &g_profile_Obj_IceBlock.base.base, + &g_profile_Obj_VolcanicBall.base.base, + &g_profile_Obj_VolcanicBomb.base.base, + &g_profile_Obj_VolcGnd.base.base, + &g_profile_Obj_KKanban.base.base, + &g_profile_E_PH.base.base, + &g_profile_NPC_ZRA.base.base, + &g_profile_Obj_Chandelier.base.base, + &g_profile_Obj_Stopper2.base.base, + &g_profile_DOOR20.base.base, + &g_profile_Tag_Hinit.base.base, + &g_profile_Tag_Hjump.base.base, + &g_profile_Tag_AJnot.base.base, + &g_profile_Tag_Hstop.base.base, + &g_profile_CANOE.base.base, + &g_profile_HORSE.base.base, + &g_profile_E_WB.base.base, + &g_profile_OBJ_ITO.base.base, + &g_profile_OBJ_SW.base.base, + &g_profile_SPINNER.base.base, + &g_profile_B_OB.base.base, + &g_profile_KAGO.base.base, + &g_profile_E_YC.base.base, + &g_profile_B_DS.base.base, + &g_profile_B_DR.base.base, + &g_profile_B_ZANTZ.base.base, + &g_profile_B_ZANT.base.base, + &g_profile_B_ZANTM.base.base, + &g_profile_TBOX.base.base, + &g_profile_TBOX2.base.base, + &g_profile_ALINK.base.base, + &g_profile_BOOMERANG.base.base, + &g_profile_MIDNA.base.base, + &g_profile_NPC_TK.base.base, + &g_profile_NPC_WORM.base.base, + &g_profile_PPolamp.base.base, + &g_profile_BkyRock.base.base, + &g_profile_HITOBJ.base.base, + &g_profile_EP.base.base, + &g_profile_COW.base.base, + &g_profile_PERU.base.base, + &g_profile_NI.base.base, + &g_profile_NPC_TKJ2.base.base, + &g_profile_SQ.base.base, + &g_profile_NPC_SQ.base.base, + &g_profile_DO.base.base, + &g_profile_NPC_NE.base.base, + &g_profile_NPC_TR.base.base, + &g_profile_NPC_LF.base.base, + &g_profile_OBJ_FOOD.base.base, + &g_profile_OBJ_KI.base.base, + &g_profile_OBJ_KITA.base.base, + &g_profile_OBJ_KEY.base.base, + &g_profile_OBJ_KEYHOLE.base.base, + &g_profile_Obj_Lv5Key.base.base, + &g_profile_OBJ_LP.base.base, + &g_profile_OBJ_TATIGI.base.base, + &g_profile_OBJ_ROCK.base.base, + &g_profile_OBJ_WFLAG.base.base, + &g_profile_OBJ_KAGE.base.base, + &g_profile_OBJ_KANBAN2.base.base, + &g_profile_OBJ_BALLOON.base.base, + &g_profile_OBJ_SUISYA.base.base, + &g_profile_OBJ_OILTUBO.base.base, + &g_profile_OBJ_ROTEN.base.base, + &g_profile_OBJ_SSDRINK.base.base, + &g_profile_OBJ_SSITEM.base.base, + &g_profile_TAG_SSDRINK.base.base, + &g_profile_TAG_BTLITM.base.base, + &g_profile_TAG_LV5SOUP.base.base, + &g_profile_TAG_MNLIGHT.base.base, + &g_profile_TAG_SHOPCAM.base.base, + &g_profile_TAG_SHOPITM.base.base, + &g_profile_OBJ_NDOOR.base.base, + &g_profile_OBJ_UDOOR.base.base, + &g_profile_OBJ_USAKU.base.base, + &g_profile_Obj_SM_DOOR.base.base, + &g_profile_OBJ_BED.base.base, + &g_profile_OBJ_BOUMATO.base.base, + &g_profile_OBJ_ITAMATO.base.base, + &g_profile_OBJ_NOUGU.base.base, + &g_profile_OBJ_STICK.base.base, + &g_profile_OBJ_MIE.base.base, + &g_profile_OBJ_SEKIDOOR.base.base, + &g_profile_OBJ_SEKIZO.base.base, + &g_profile_OBJ_SMTILE.base.base, + &g_profile_NPC_FISH.base.base, + &g_profile_MG_FISH.base.base, + &g_profile_FSHOP.base.base, + &g_profile_NPC_DU.base.base, + &g_profile_DISAPPEAR.base.base, + &g_profile_Obj_Mato.base.base, + &g_profile_Obj_Flag.base.base, + &g_profile_Obj_Flag2.base.base, + &g_profile_Obj_Flag3.base.base, + &g_profile_Obj_GOMIKABE.base.base, + &g_profile_Obj_Yousei.base.base, + &g_profile_Obj_Kabuto.base.base, + &g_profile_Obj_Cho.base.base, + &g_profile_Obj_Kuw.base.base, + &g_profile_Obj_Nan.base.base, + &g_profile_Obj_Dan.base.base, + &g_profile_Obj_Kam.base.base, + &g_profile_Obj_Ten.base.base, + &g_profile_Obj_Ari.base.base, + &g_profile_Obj_Kag.base.base, + &g_profile_Obj_Batta.base.base, + &g_profile_Obj_Tombo.base.base, + &g_profile_Obj_Kat.base.base, + &g_profile_Obj_H_Saku.base.base, + &g_profile_Obj_Yobikusa.base.base, + &g_profile_Obj_KazeNeko.base.base, + &g_profile_Obj_KznkArm.base.base, + &g_profile_Obj_NamePlate.base.base, + &g_profile_Obj_OnCloth.base.base, + &g_profile_Obj_LndRope.base.base, + &g_profile_Obj_ItaRope.base.base, + &g_profile_Obj_Sakuita.base.base, + &g_profile_Obj_Laundry.base.base, + &g_profile_WarpBug.base.base, + &g_profile_Izumi_Gate.base.base, + &g_profile_Obj_Fchain.base.base, + &g_profile_Obj_Wchain.base.base, + &g_profile_Tag_Attp.base.base, + &g_profile_Obj_Tornado.base.base, + &g_profile_Obj_Tornado2.base.base, + &g_profile_Obj_FirePillar.base.base, + &g_profile_Obj_FirePillar2.base.base, + &g_profile_Obj_InoBone.base.base, + &g_profile_Obj_Stopper.base.base, + &g_profile_Obj_MHole.base.base, + &g_profile_Tag_Magne.base.base, + &g_profile_Obj_BossWarp.base.base, + &g_profile_Obj_WoodPendulum.base.base, + &g_profile_Obj_WdStick.base.base, + &g_profile_Obj_StairBlock.base.base, + &g_profile_Obj_Geyser.base.base, + &g_profile_Tag_KtOnFire.base.base, + &g_profile_Obj_FireWood.base.base, + &g_profile_Obj_FireWood2.base.base, + &g_profile_Obj_GpTaru.base.base, + &g_profile_Obj_OnsenTaru.base.base, + &g_profile_Obj_KiPot.base.base, + &g_profile_TBOX_SW.base.base, + &g_profile_Obj_SwChain.base.base, + &g_profile_Obj_WoodenSword.base.base, + &g_profile_Obj_StoneMark.base.base, + &g_profile_Obj_Lv3Candle.base.base, + &g_profile_Tag_Lv4Candle.base.base, + &g_profile_Tag_Lv4CandleDm.base.base, + &g_profile_Obj_DamCps.base.base, + &g_profile_Obj_Smoke.base.base, + &g_profile_Obj_WaterFall.base.base, + &g_profile_Obj_ZoraCloth.base.base, + &g_profile_Obj_poFire.base.base, + &g_profile_Tag_poFire.base.base, + &g_profile_Obj_glowSphere.base.base, + &g_profile_Tag_LightBall.base.base, + &g_profile_SwLBall.base.base, + &g_profile_SwBall.base.base, + &g_profile_Obj_WaterEff.base.base, + &g_profile_Tag_RiverBack.base.base, + &g_profile_Tag_KagoFall.base.base, + &g_profile_Tag_Lv2PrChk.base.base, + &g_profile_Obj_Lv4Gear.base.base, + &g_profile_Obj_MasterSword.base.base, + &g_profile_Obj_WoodStatue.base.base, + &g_profile_Obj_Fan.base.base, + &g_profile_Obj_IceLeaf.base.base, + &g_profile_Obj_zrTuraraRc.base.base, + &g_profile_Tag_RetRoom.base.base, + &g_profile_Obj_WindStone.base.base, + &g_profile_Tag_WaraHowl.base.base, + &g_profile_Obj_SCannon.base.base, + &g_profile_Obj_SmWStone.base.base, + &g_profile_Obj_SCannonCrs.base.base, + &g_profile_Tag_SnowEff.base.base, + &g_profile_Tag_CstaSw.base.base, + &g_profile_Tag_Lv6CstaSw.base.base, + &g_profile_Obj_awaPlar.base.base, + &g_profile_Obj_poTbox.base.base, + &g_profile_Obj_TimeFire.base.base, + &g_profile_Obj_TMoon.base.base, + &g_profile_Obj_GanonWall.base.base, + &g_profile_Obj_Prop.base.base, + &g_profile_CSTATUE.base.base, + &g_profile_Obj_SwBallA.base.base, + &g_profile_Obj_SwBallB.base.base, + &g_profile_Obj_SnowSoup.base.base, + &g_profile_Obj_Nagaisu.base.base, + &g_profile_Obj_RCircle.base.base, + &g_profile_Obj_Picture.base.base, + &g_profile_Tag_SetBall.base.base, + &g_profile_Tag_SmkEmt.base.base, + &g_profile_SwTime.base.base, + &g_profile_Obj_HFtr.base.base, + &g_profile_Obj_HBarrel.base.base, + &g_profile_Obj_Crystal.base.base, + &g_profile_Obj_SCannonTen.base.base, + &g_profile_Obj_SwBallC.base.base, + &g_profile_SCENE_EXIT2.base.base, + &g_profile_Obj_Hata.base.base, + &g_profile_Obj_ToaruMaki.base.base, + &g_profile_Tag_AttackItem.base.base, + &g_profile_Tag_RmbitSw.base.base, + &g_profile_Obj_Sword.base.base, + &g_profile_Tag_Spring.base.base, + &g_profile_Tag_Statue.base.base, + &g_profile_E_AI.base.base, + &g_profile_E_GS.base.base, + &g_profile_E_GOB.base.base, + &g_profile_E_DD.base.base, + &g_profile_E_DN.base.base, + &g_profile_E_S1.base.base, + &g_profile_E_MF.base.base, + &g_profile_E_SG.base.base, + &g_profile_E_BS.base.base, + &g_profile_E_SF.base.base, + &g_profile_E_SH.base.base, + &g_profile_E_DF.base.base, + &g_profile_E_GM.base.base, + &g_profile_E_MD.base.base, + &g_profile_E_SM.base.base, + &g_profile_E_SM2.base.base, + &g_profile_E_ST.base.base, + &g_profile_E_ST_LINE.base.base, + &g_profile_E_SB.base.base, + &g_profile_E_TH.base.base, + &g_profile_E_CR.base.base, + &g_profile_E_CR_EGG.base.base, + &g_profile_E_DB.base.base, + &g_profile_E_DB_LEAF.base.base, + &g_profile_E_GA.base.base, + &g_profile_E_GB.base.base, + &g_profile_E_HB.base.base, + &g_profile_E_HB_LEAF.base.base, + &g_profile_E_HZELDA.base.base, + &g_profile_E_YD.base.base, + &g_profile_E_YH.base.base, + &g_profile_E_YD_LEAF.base.base, + &g_profile_E_HM.base.base, + &g_profile_E_TK.base.base, + &g_profile_E_TK2.base.base, + &g_profile_E_TK_BALL.base.base, + &g_profile_E_RB.base.base, + &g_profile_E_RD.base.base, + &g_profile_E_RDB.base.base, + &g_profile_E_RDY.base.base, + &g_profile_E_FM.base.base, + &g_profile_E_FS.base.base, + &g_profile_E_PM.base.base, + &g_profile_E_PO.base.base, + &g_profile_E_MB.base.base, + &g_profile_E_MK.base.base, + &g_profile_E_MM.base.base, + &g_profile_E_FZ.base.base, + &g_profile_E_ZS.base.base, + &g_profile_E_KK.base.base, + &g_profile_E_HP.base.base, + &g_profile_E_ZH.base.base, + &g_profile_E_ZM.base.base, + &g_profile_E_PZ.base.base, + &g_profile_E_FB.base.base, + &g_profile_E_FK.base.base, + &g_profile_E_MS.base.base, + &g_profile_E_NEST.base.base, + &g_profile_E_NZ.base.base, + &g_profile_E_BA.base.base, + &g_profile_E_BU.base.base, + &g_profile_E_BUG.base.base, + &g_profile_E_BEE.base.base, + &g_profile_E_IS.base.base, + &g_profile_E_KG.base.base, + &g_profile_E_KR.base.base, + &g_profile_E_SW.base.base, + &g_profile_E_GE.base.base, + &g_profile_Tag_WatchGe.base.base, + &g_profile_E_YM.base.base, + &g_profile_E_YM_TAG.base.base, + &g_profile_E_YMB.base.base, + &g_profile_Tag_FWall.base.base, + &g_profile_Tag_WaterFall.base.base, + &g_profile_E_YK.base.base, + &g_profile_E_YR.base.base, + &g_profile_E_YG.base.base, + &g_profile_E_HZ.base.base, + &g_profile_E_WS.base.base, + &g_profile_E_OC.base.base, + &g_profile_E_OT.base.base, + &g_profile_E_DT.base.base, + &g_profile_E_BG.base.base, + &g_profile_E_OctBg.base.base, + &g_profile_DR.base.base, + &g_profile_L7lowDr.base.base, + &g_profile_L7ODR.base.base, + &g_profile_E_TT.base.base, + &g_profile_E_DK.base.base, + &g_profile_E_VT.base.base, + &g_profile_E_WW.base.base, + &g_profile_E_GI.base.base, + &g_profile_B_BH.base.base, + &g_profile_B_BQ.base.base, + &g_profile_B_GM.base.base, + &g_profile_B_GND.base.base, + &g_profile_B_GO.base.base, + &g_profile_B_OH2.base.base, + &g_profile_B_YO.base.base, + &g_profile_B_YOI.base.base, + &g_profile_B_TN.base.base, + &g_profile_B_GG.base.base, + &g_profile_B_DRE.base.base, + &g_profile_B_MGN.base.base, + &g_profile_E_WAP.base.base, + &g_profile_ITEM.base.base, + &g_profile_Obj_SmallKey.base.base, + &g_profile_Obj_Kantera.base.base, + &g_profile_Obj_LifeContainer.base.base, + &g_profile_Obj_Shield.base.base, + &g_profile_Demo_Item.base.base, + &g_profile_ShopItem.base.base, + &g_profile_Obj_Drop.base.base, + &g_profile_OBJ_RW.base.base, + &g_profile_NBOMB.base.base, + &g_profile_TAG_CSW.base.base, + &g_profile_TAG_QS.base.base, + &g_profile_HOZELDA.base.base, + &g_profile_SWC00.base.base, + &g_profile_KNOB20.base.base, + &g_profile_DBDOOR.base.base, + &g_profile_BOSS_DOOR.base.base, + &g_profile_L1BOSS_DOOR.base.base, + &g_profile_L1MBOSS_DOOR.base.base, + &g_profile_L5BOSS_DOOR.base.base, + &g_profile_DSHUTTER.base.base.base, + &g_profile_SPIRAL_DOOR.base.base, + &g_profile_Tag_ChgRestart.base.base, + &g_profile_Tag_Restart.base.base, + &g_profile_ANDSW.base.base, + &g_profile_ANDSW2.base.base, + &g_profile_MYNA.base.base, + &g_profile_NPC_GND.base.base, + &g_profile_NPC_GRA.base.base, + &g_profile_NPC_GRC.base.base, + &g_profile_NPC_GRD.base.base, + &g_profile_NPC_GRM.base.base, + &g_profile_NPC_GRMC.base.base, + &g_profile_NPC_GRO.base.base, + &g_profile_NPC_GRR.base.base, + &g_profile_NPC_GRS.base.base, + &g_profile_NPC_GRZ.base.base, + &g_profile_NPC_YAMID.base.base, + &g_profile_NPC_YAMIT.base.base, + &g_profile_NPC_YAMIS.base.base, + &g_profile_NPC_BLUENS.base.base, + &g_profile_NPC_KAKASHI.base.base, + &g_profile_NPC_KDK.base.base, + &g_profile_NPC_ARU.base.base, + &g_profile_NPC_BANS.base.base, + &g_profile_NPC_BESU.base.base, + &g_profile_NPC_BOU.base.base, + &g_profile_NPC_BOU_S.base.base, + &g_profile_NPC_CLERKA.base.base, + &g_profile_NPC_CLERKB.base.base, + &g_profile_NPC_CLERKT.base.base, + &g_profile_NPC_WRESTLER.base.base, + &g_profile_Tag_Arena.base.base, + &g_profile_Tag_Instruction.base.base, + &g_profile_NPC_DOC.base.base, + &g_profile_NPC_GWOLF.base.base, + &g_profile_NPC_LEN.base.base, + &g_profile_NPC_LUD.base.base, + &g_profile_NPC_FAIRY_SEIREI.base.base, + &g_profile_NPC_FAIRY.base.base, + &g_profile_NPC_HANJO.base.base, + &g_profile_NPC_HENNA.base.base, + &g_profile_NPC_HENNA0.base.base, + &g_profile_NPC_HOZ.base.base, + &g_profile_NPC_JAGAR.base.base, + &g_profile_NPC_KKRI.base.base, + &g_profile_NPC_KN.base.base, + &g_profile_KN_BULLET.base.base, + &g_profile_NPC_KNJ.base.base, + &g_profile_NPC_KOLIN.base.base, + &g_profile_NPC_KOLINB.base.base, + &g_profile_NPC_KYURY.base.base, + &g_profile_NPC_MARO.base.base, + &g_profile_NPC_MIDP.base.base, + &g_profile_NPC_MOI.base.base, + &g_profile_NPC_RACA.base.base, + &g_profile_NPC_SARU.base.base, + &g_profile_NPC_SEIB.base.base, + &g_profile_NPC_SEIC.base.base, + &g_profile_NPC_SEID.base.base, + &g_profile_NPC_SEIRA.base.base, + &g_profile_NPC_SERA2.base.base, + &g_profile_NPC_SEIREI.base.base, + &g_profile_NPC_SHAMAN.base.base, + &g_profile_NPC_SMARO.base.base, + &g_profile_NPC_SOLA.base.base, + &g_profile_NPC_TARO.base.base, + &g_profile_NPC_PACHI_BESU.base.base, + &g_profile_NPC_PACHI_TARO.base.base, + &g_profile_NPC_PACHI_MARO.base.base, + &g_profile_TAG_PATI.base.base, + &g_profile_NPC_THE.base.base, + &g_profile_NPC_TKJ.base.base, + &g_profile_NPC_TKS.base.base, + &g_profile_NPC_TKC.base.base, + &g_profile_OBJ_TKS.base.base, + &g_profile_NPC_TOBY.base.base, + &g_profile_NPC_URI.base.base, + &g_profile_NPC_YELIA.base.base, + &g_profile_NPC_YKM.base.base, + &g_profile_NPC_YKW.base.base, + &g_profile_NPC_ZANB.base.base, + &g_profile_NPC_ZANT.base.base, + &g_profile_NPC_ZELDA.base.base, + &g_profile_NPC_ZELR.base.base, + &g_profile_NPC_ZELRO.base.base, + &g_profile_OBJ_ZRAFREEZE.base.base, + &g_profile_NPC_ZRC.base.base, + &g_profile_NPC_ZRZ.base.base, + &g_profile_ZRA_MARK.base.base, + &g_profile_MYNA2.base.base, + &g_profile_TAG_MYNA2.base.base, + &g_profile_NPC_CD3.base.base, + &g_profile_Tag_Schedule.base.base, + &g_profile_Tag_Escape.base.base, + &g_profile_NPC_CHAT.base.base, + &g_profile_NPC_SOLDIERa.base.base, + &g_profile_NPC_SOLDIERb.base.base, + &g_profile_PASSER_MNG.base.base, + &g_profile_NPC_PASSER.base.base, + &g_profile_NPC_PASSER2.base.base, + &g_profile_NPC_POST.base.base, + &g_profile_NPC_POUYA.base.base, + &g_profile_FORMATION_MNG.base.base, + &g_profile_NPC_FGUARD.base.base, + &g_profile_GUARD_MNG.base.base, + &g_profile_TAG_GUARD.base.base, + &g_profile_NPC_GUARD.base.base, + &g_profile_NPC_ASH.base.base, + &g_profile_NPC_ASHB.base.base, + &g_profile_NPC_SHAD.base.base, + &g_profile_NPC_RAFREL.base.base, + &g_profile_NPC_MOIR.base.base, + &g_profile_NPC_IMPAL.base.base, + &g_profile_NPC_SHOE.base.base, + &g_profile_NPC_DOORBOY.base.base, + &g_profile_NPC_PRAYER.base.base, + &g_profile_NPC_KASIHANA.base.base, + &g_profile_NPC_KASIKYU.base.base, + &g_profile_NPC_KASIMICH.base.base, + &g_profile_NPC_DRSOL.base.base, + &g_profile_NPC_CHIN.base.base, + &g_profile_NPC_INS.base.base, + &g_profile_NPC_SHOP0.base.base, + &g_profile_NPC_MK.base.base, + &g_profile_NPC_P2.base.base, + &g_profile_KYTAG00.base.base, + &g_profile_KYTAG01.base.base, + &g_profile_KYTAG02.base.base, + &g_profile_KYTAG03.base.base, + &g_profile_KYTAG04.base.base, + &g_profile_KYTAG05.base.base, + &g_profile_KYTAG06.base.base, + &g_profile_KYTAG07.base.base, + &g_profile_KYTAG08.base.base, + &g_profile_KYTAG09.base.base, + &g_profile_KYTAG10.base.base, + &g_profile_KYTAG11.base.base, + &g_profile_KYTAG12.base.base, + &g_profile_KYTAG13.base.base, + &g_profile_KYTAG14.base.base, + &g_profile_KYTAG15.base.base, + &g_profile_KYTAG16.base.base, + &g_profile_KYTAG17.base.base, + &g_profile_Ykgr.base.base, + &g_profile_TALK.base.base, + &g_profile_Obj_Crope.base.base, + &g_profile_Obj_Bombf.base.base, + &g_profile_Obj_BkLeaf.base.base, + &g_profile_Tag_Mhint.base.base, + &g_profile_Tag_Mmsg.base.base, + &g_profile_Tag_Mwait.base.base, + &g_profile_Tag_Mstop.base.base, + &g_profile_Tag_Stream.base.base, + &g_profile_Tag_Sppath.base.base, + &g_profile_Tag_Wljump.base.base, + &g_profile_Tag_TWGate.base.base, + &g_profile_Tag_Lv6Gate.base.base, + &g_profile_Tag_Lv7Gate.base.base, + &g_profile_Tag_Lv8Gate.base.base, + &g_profile_Tag_TheBHint.base.base, + &g_profile_Tag_Assist.base.base, + &g_profile_DEMO00.base.base, + &g_profile_TAG_CAMERA.base.base, + &g_profile_TAG_CHKPOINT.base.base, + &g_profile_TAG_EVENT.base.base, + &g_profile_TAG_EVT.base.base, + &g_profile_TAG_TELOP.base.base, + &g_profile_TAG_HOWL.base.base, + &g_profile_TAG_MSG.base.base, + &g_profile_TAG_LANTERN.base.base, + &g_profile_Tag_Mist.base.base, + &g_profile_DMIDNA.base.base, + &g_profile_KY_THUNDER.base.base, + &g_profile_VRBOX.base.base, + &g_profile_VRBOX2.base.base, + &g_profile_BG.base.base.base, + &g_profile_SET_BG_OBJ.base.base, + &g_profile_BG_OBJ.base.base, + &g_profile_MIRROR.base.base, + &g_profile_MOVIE_PLAYER.base.base, + &g_profile_TITLE.base.base, + &g_profile_FR.base.base, + &g_profile_ECONT.base.base, + &g_profile_MG_ROD.base.base, + &g_profile_E_ARROW.base.base, + &g_profile_BULLET.base.base, + &g_profile_SWHIT0.base.base, + &g_profile_E_TH_BALL.base.base, + &g_profile_TAG_EVTAREA.base.base, + &g_profile_TAG_EVTMSG.base.base, + &g_profile_TAG_KMSG.base.base, + &g_profile_TAG_PUSH.base.base, + &g_profile_E_MK_BO.base.base, + &g_profile_E_MM_MT.base.base, + &g_profile_OBJ_KBOX.base.base, + &g_profile_OBJ_FW.base.base, + &g_profile_B_GOS.base.base, + &g_profile_OBJ_YSTONE.base.base, + &g_profile_MANT.base.base, + &g_profile_CROD.base.base, + &g_profile_OBJ_PLEAF.base.base, + &g_profile_OBJ_KBACKET.base.base, + &g_profile_OBJ_YBAG.base.base, + &g_profile_OBJ_PUMPKIN.base.base, + &g_profile_OBJ_AUTOMATA.base.base, + &g_profile_OBJ_GADGET.base.base, + &g_profile_OBJ_KAGO.base.base, + &g_profile_Obj_Carry.base.base, + &g_profile_Obj_Stone.base.base, + &g_profile_OBJ_HB.base.base, + &g_profile_NPC_INKO.base.base, + &g_profile_BD.base.base, + &g_profile_Obj_Eff.base.base, + &g_profile_WPILLAR.base.base, + &g_profile_WMARK.base.base, + &g_profile_E_BI.base.base, + &g_profile_E_BI_LEAF.base.base, + &g_profile_START_AND_GOAL.base.base, + &g_profile_NPC_DF.base.base, + &g_profile_ARROW.base.base, + &g_profile_PATH_LINE.base.base.base, + &g_profile_TAG_ALLMATO.base.base, + &g_profile_Obj_Timer.base.base, + &g_profile_SCENE_EXIT.base.base.base, + &g_profile_CAMERA.base.base.base, + &g_profile_CAMERA2.base.base.base, + &g_profile_SUSPEND.base.base, + &g_profile_GRASS.base.base, + &g_profile_KYEFF.base.base, + &g_profile_KYEFF2.base.base, + &g_profile_MSG_OBJECT.base.base, + &g_profile_MENUWINDOW.base.base, + &g_profile_TIMER.base.base, + &g_profile_METER2.base.base, + &g_profile_GAMEOVER.base.base, + NULL, +}; +#endif diff --git a/src/f_pc/f_pc_stdcreate_req.cpp b/src/f_pc/f_pc_stdcreate_req.cpp index 9f56391dd2..4600ee2ba5 100644 --- a/src/f_pc/f_pc_stdcreate_req.cpp +++ b/src/f_pc/f_pc_stdcreate_req.cpp @@ -9,9 +9,11 @@ #include "f_pc/f_pc_manager.h" #include "f_pc/f_pc_debug_sv.h" #include +#include int fpcSCtRq_phase_Load(standard_create_request_class* i_request) { int ret = fpcLd_Load(i_request->process_name); + printf("[DIAG] fpcSCtRq_phase_Load: procName=%d ret=%d\n", i_request->process_name, ret); fflush(stdout); switch (ret) { case cPhs_INIT_e: @@ -26,15 +28,18 @@ int fpcSCtRq_phase_Load(standard_create_request_class* i_request) { } int fpcSCtRq_phase_CreateProcess(standard_create_request_class* i_request) { + printf("[DIAG] fpcSCtRq_phase_CreateProcess: procName=%d\n", i_request->process_name); fflush(stdout); fpcLy_SetCurrentLayer(i_request->base.layer); i_request->base.process = fpcBs_Create(i_request->process_name, i_request->base.id, i_request->process_append); if (i_request->base.process == NULL) { + printf("[DIAG] fpcSCtRq_phase_CreateProcess: fpcBs_Create FAILED for procName=%d\n", i_request->process_name); fflush(stdout); OS_REPORT("fpcSCtRq_phase_CreateProcess %d\n", i_request->process_name); fpcLd_Free(i_request->process_name); return cPhs_ERROR_e; } else { + printf("[DIAG] fpcSCtRq_phase_CreateProcess: fpcBs_Create OK proc=%p\n", i_request->base.process); fflush(stdout); i_request->base.process->create_req = &i_request->base; return cPhs_NEXT_e; } @@ -43,6 +48,11 @@ int fpcSCtRq_phase_CreateProcess(standard_create_request_class* i_request) { int fpcSCtRq_phase_SubCreateProcess(standard_create_request_class* i_request) { fpcLy_SetCurrentLayer(i_request->base.layer); int ret = fpcBs_SubCreate(i_request->base.process); + static int sSubCreateLogCount = 0; + if (sSubCreateLogCount < 20) { + printf("[DIAG] fpcSCtRq_phase_SubCreateProcess: procName=%d ret=%d\n", i_request->process_name, ret); fflush(stdout); + sSubCreateLogCount++; + } #if DEBUG if (ret == 0 && i_request->unk_0x60-- <= 0) { diff --git a/src/m_Do/m_Do_DVDError.cpp b/src/m_Do/m_Do_DVDError.cpp index d4884aeb1c..0706d0a851 100644 --- a/src/m_Do/m_Do_DVDError.cpp +++ b/src/m_Do/m_Do_DVDError.cpp @@ -4,11 +4,15 @@ */ #include "m_Do/m_Do_DVDError.h" -#include "JSystem/JKernel/JKRAssertHeap.h" #include +#include "JSystem/JKernel/JKRAssertHeap.h" +#include "m_Do/m_Do_Reset.h" #include "m_Do/m_Do_dvd_thread.h" #include "m_Do/m_Do_ext.h" -#include "m_Do/m_Do_Reset.h" + +// Added for the sleep workaround +#include +#include #if PLATFORM_GCN const int stack_size = 3072; @@ -16,7 +20,6 @@ const int stack_size = 3072; const int stack_size = 8192; #endif - bool mDoDvdErr_initialized; static OSThread DvdErr_thread; @@ -26,20 +29,24 @@ static OSThread DvdErr_thread; static u8 DvdErr_stack[stack_size] ATTRIBUTE_ALIGN(16); #pragma pop -static OSAlarm Alarm; +// Alarm is not needed for the PC workaround +// static OSAlarm Alarm; void mDoDvdErr_ThdInit() { if (mDoDvdErr_initialized) { return; } - OSTime time = OSGetTime(); + // OSTime time = OSGetTime(); // Unused in workaround - OSCreateThread(&DvdErr_thread, (void*(*)(void*))mDoDvdErr_Watch, NULL, DvdErr_stack + sizeof(DvdErr_stack), - sizeof(DvdErr_stack), OSGetThreadPriority(OSGetCurrentThread()) - 3, 1); + OSCreateThread(&DvdErr_thread, (void* (*)(void*))mDoDvdErr_Watch, NULL, + DvdErr_stack + sizeof(DvdErr_stack), sizeof(DvdErr_stack), + OSGetThreadPriority(OSGetCurrentThread()) - 3, 1); OSResumeThread(&DvdErr_thread); - OSCreateAlarm(&Alarm); - OSSetPeriodicAlarm(&Alarm, time, OS_BUS_CLOCK / 4, AlarmHandler); + + // PC Workaround: Disable Alarm logic. The thread will sleep itself. + // OSCreateAlarm(&Alarm); + // OSSetPeriodicAlarm(&Alarm, time, OS_BUS_CLOCK / 4, AlarmHandler); mDoDvdErr_initialized = true; } @@ -47,14 +54,16 @@ void mDoDvdErr_ThdInit() { void mDoDvdErr_ThdCleanup() { if (mDoDvdErr_initialized) { OSCancelThread(&DvdErr_thread); - OSCancelAlarm(&Alarm); + // OSCancelAlarm(&Alarm); // Disable Alarm cancel mDoDvdErr_initialized = false; } } static void mDoDvdErr_Watch(void*) { #if PLATFORM_GCN +#ifndef TARGET_PC OSDisableInterrupts(); +#endif #endif JKRThread(OSGetCurrentThread(), 0); @@ -66,10 +75,20 @@ static void mDoDvdErr_Watch(void*) { if (status == DVD_STATE_FATAL_ERROR) { mDoDvdThd::suspend(); } - OSSuspendThread(&DvdErr_thread); + + // PC Workaround: + // Instead of suspending and waiting for an Alarm (which might not be implemented), + // we simply sleep for a short duration. + // OS_BUS_CLOCK / 4 corresponds to roughly 1/4th of a second on GC. + // We use 250ms here to simulate the periodic check. + + // OSSuspendThread(&DvdErr_thread); // <-- Original causing deadlock without Alarm + std::this_thread::sleep_for(std::chrono::milliseconds(250)); + } while (true); } static void AlarmHandler(OSAlarm*, OSContext*) { + // This handler is no longer called in the PC workaround OSResumeThread(&DvdErr_thread); -} +} \ No newline at end of file diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index 7f4bf6f8f9..c8465b60a2 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -3006,7 +3006,7 @@ void mDoExt_3DlineMatSortPacket::draw() { J3DShape::resetVcdVatCache(); } -#if DEBUG +#if DEBUG || !__MWERKS__ mDoExt_cube8pPacket::mDoExt_cube8pPacket(cXyz* i_points, const GXColor& i_color) { cXyz* pnt_array = mPoints; diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index 1708067ac4..be577e7b12 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -3,6 +3,8 @@ * Graphics Management Functions */ +#include + #include "d/dolzel.h" // IWYU pragma: keep #include "JSystem/J2DGraph/J2DOrthoGraph.h" @@ -31,6 +33,7 @@ #include "d/d_meter2_info.h" #include "d/d_s_play.h" #include "DynamicLink.h" +#include "dusk/endian.h" #if PLATFORM_WII || PLATFORM_SHIELD #include @@ -237,12 +240,12 @@ static ResTIMG* createTimg(u16 width, u16 height, u32 format) { cLib_memSet(timg, 0, bufferSize); timg->format = format; timg->alphaEnabled = false; - timg->width = width; - timg->height = height; + timg->width = RES_U16(width); + timg->height = RES_U16(height); timg->minFilter = GX_LINEAR; timg->magFilter = GX_LINEAR; timg->mipmapCount = 1; - timg->imageOffset = 0x20; + timg->imageOffset = RES_U32(0x20); return timg; } @@ -465,7 +468,7 @@ void mDoGph_gInf_c::calcFade() { } if (mFadeColor.a != 0) { - darwFilter(mFadeColor); + //darwFilter(mFadeColor); } } @@ -1090,7 +1093,7 @@ void mDoGph_gInf_c::bloom_c::create() { mPoint = 128; mBlureSize = 64; mBlureRatio = 128; - mBlendColor = (GXColor){255, 255, 255, 255}; + mBlendColor = COMPOUND_LITERAL(GXColor){255, 255, 255, 255}; } } @@ -1511,6 +1514,14 @@ static void drawItem3D() { } int mDoGph_Painter() { + // Diagnostic: log windowNum to track game state machine progress + static bool sDiagLoggedWindow = false; + if (!sDiagLoggedWindow) { + int wn = dComIfGp_getWindowNum(); + printf("[DIAG] mDoGph_Painter: windowNum=%d\n", wn); fflush(stdout); + if (wn != 0) sDiagLoggedWindow = true; + } + #if DEBUG drawHeapMap(); #endif @@ -2079,6 +2090,19 @@ int mDoGph_Painter() { dComIfGp_particle_draw2DmenuFore(&draw_info3); j3dSys.setViewMtx(m4); + } else { + // No camera window active — still draw 2D display lists + // (needed for logo scene, which has no 3D camera) + static int sElseLogCount = 0; + if (sElseLogCount < 10) { + printf("[DIAG] mDoGph_Painter else: drawing 2D lists (frame %d)\n", sElseLogCount); + fflush(stdout); + sElseLogCount++; + } + ortho.setPort(); + dComIfGd_draw2DOpa(); + dComIfGd_draw2DOpaTop(); + dComIfGd_draw2DXlu(); } #if DEBUG diff --git a/src/m_Do/m_Do_lib.cpp b/src/m_Do/m_Do_lib.cpp index 8876beb12d..9acf9a3260 100644 --- a/src/m_Do/m_Do_lib.cpp +++ b/src/m_Do/m_Do_lib.cpp @@ -38,12 +38,12 @@ f32 mDoLib_clipper::mSystemFar; f32 mDoLib_clipper::mFovyRate; -void mDoLib_clipper::setup(f32 fovy, f32 aspect, f32 near, f32 far) { +void mDoLib_clipper::setup(f32 fovy, f32 aspect, f32 near_, f32 far_) { mClipper.setFovy(fovy); mClipper.setAspect(aspect); - mClipper.setNear(near); - mClipper.setFar(far); - mSystemFar = far; + mClipper.setNear(near_); + mClipper.setFar(far_); + mSystemFar = far_; mClipper.calcViewFrustum(); s16 tmp = DEG2S(fovy); @@ -121,11 +121,11 @@ void mDoLib_pos2camera(Vec* src, Vec* dst) { static void dummy() { std::tan(0.0f); J3DAlphaComp* alphaComp = NULL; - alphaComp->setAlphaCompInfo((J3DAlphaCompInfo){}); + alphaComp->setAlphaCompInfo(COMPOUND_LITERAL(J3DAlphaCompInfo){}); J3DPEBlock* peBlock = NULL; - peBlock->getZMode()->setZModeInfo((J3DZModeInfo){}); + peBlock->getZMode()->setZModeInfo(COMPOUND_LITERAL(J3DZModeInfo){}); dComIfGd_getInvViewMtx(); J3DMaterial* mat = NULL; mat->getTevKColor(0); - mDoLib_clipper::clip(j3dSys.getViewMtx(), (Vec){}, 0.0f); + mDoLib_clipper::clip(j3dSys.getViewMtx(), COMPOUND_LITERAL(Vec){}, 0.0f); } diff --git a/src/m_Do/m_Do_machine.cpp b/src/m_Do/m_Do_machine.cpp index 08ede9161a..2811cff7b1 100644 --- a/src/m_Do/m_Do_machine.cpp +++ b/src/m_Do/m_Do_machine.cpp @@ -344,9 +344,15 @@ static void myMemoryErrorRoutine(void* p_heap, u32 size, int alignment) { if (notSolidHeap) { // "Error: Can't allocate memory %d(0x%x)Bytes, %d Byte Alignment from %08x\n" +#if TARGET_PC + OSReport_Error( + "Error: Can't allocate memory %d(0x%x)Bytes, %d Byte Alignment from %08x\n", + size, size, alignment, p_heap); +#else OSReport_Error( "エラー: メモリを確保できません %d(0x%x)バイト、 %d バイトアライメント from %08x\n", size, size, alignment, p_heap); +#endif } union { @@ -831,6 +837,19 @@ int mDoMch_Create() { arenaSize -= 0x6C00; arenaSize -= 0xC800; #endif + +#if TARGET_PC + // Change heap sizes to account for 64bit pointers & extra memory available. + arenaSize = 32 * 1024 * 1024; + commandHeapSize *= 2; +#if DEBUG + dynamicLinkHeapSize *= 2; +#endif + archiveHeapSize *= 2; + j2dHeapSize *= 2; + gameHeapSize *= 2; +#endif + JFWSystem::setSysHeapSize(arenaSize); my_PrintHeap("システムヒープ", arenaSize); diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 748959eb67..49a52cd8f4 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -1,1008 +1,326 @@ /** * m_Do_main.cpp * Main Initialization + * PC Port Version - based on Aurora integration from Vorversion */ #include "m_Do/m_Do_main.h" +#include +#include #include "DynamicLink.h" #include "JSystem/JAudio2/JASAudioThread.h" #include "JSystem/JAudio2/JAUSoundTable.h" #include "JSystem/JFramework/JFWSystem.h" +#include "JSystem/JHostIO/JORServer.h" #include "JSystem/JKernel/JKRAram.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "JSystem/JUtility/JUTConsole.h" -#include "JSystem/JUtility/JUTReport.h" #include "JSystem/JUtility/JUTException.h" #include "JSystem/JUtility/JUTProcBar.h" -#include "JSystem/JHostIO/JORServer.h" +#include "JSystem/JUtility/JUTReport.h" +#include "SSystem/SComponent/c_counter.h" #include "Z2AudioLib/Z2WolfHowlMgr.h" #include "c/c_dylink.h" #include "d/d_com_inf_game.h" +#include "d/d_debug_pad.h" #include "d/d_s_logo.h" #include "d/d_s_menu.h" #include "d/d_s_play.h" -#include "d/d_debug_pad.h" #include "f_ap/f_ap_game.h" #include "f_op/f_op_msg.h" #include "m_Do/m_Do_MemCard.h" #include "m_Do/m_Do_Reset.h" #include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_dvd_thread.h" +#include "m_Do/m_Do_ext2.h" #include "m_Do/m_Do_graphic.h" #include "m_Do/m_Do_machine.h" #include "m_Do/m_Do_printf.h" -#include "m_Do/m_Do_ext2.h" -#include "SSystem/SComponent/c_counter.h" -#include -#if PLATFORM_WII || PLATFORM_SHIELD -#include -#endif +#include +#include +#include "SSystem/SComponent/c_API.h" +#include "dusk/dvd_emu.h" -class mDoMain_HIO_c : public mDoHIO_entry_c { -public: - void listenPropertyEvent(const JORPropertyEvent*); - void genMessage(JORMContext*); -}; - -void version_check() { -#if !PLATFORM_SHIELD - if (!strcmp("20Apr2004", "20Apr2004") && !strcmp("Patch2", "Patch2")) { - return; - } - - // "SDK version doesn't match. Stopping\n" - OSReport_Error("SDKのバージョンが一致しません。停止します\n"); - do { - } while (true); -#endif -} - -char mDoMain::COPYDATE_STRING[18] = "??/??/?? ??:??:??"; - -// static HeapCheck RootHeapCheck; -static HeapCheck RootHeapCheck = HeapCheck(0,"Root","ルート"); - -// static HeapCheck SystemHeapCheck; -static HeapCheck SystemHeapCheck = HeapCheck(0,"System","システム"); - -// static HeapCheck ZeldaHeapCheck; -static HeapCheck ZeldaHeapCheck = HeapCheck(0,"Zelda","ゼルダ"); - -// static HeapCheck GameHeapCheck; -static HeapCheck GameHeapCheck = HeapCheck(0,"Game","ゲーム"); - -// static HeapCheck ArchiveHeapCheck; -static HeapCheck ArchiveHeapCheck = HeapCheck(0,"Archive","アーカイブ"); - -// static HeapCheck J2dHeapCheck; -static HeapCheck J2dHeapCheck = HeapCheck(0,"J2d","J2D"); - -// static HeapCheck HostioHeapCheck; -static HeapCheck HostioHeapCheck = HeapCheck(0,"Hostio","ホストIO"); - -// static HeapCheck CommandHeapCheck; -static HeapCheck CommandHeapCheck = HeapCheck(0,"Command","コマンド"); - -static HeapCheck* HeapCheckTable[8] = { - &RootHeapCheck, &SystemHeapCheck, &ZeldaHeapCheck, &GameHeapCheck, - &ArchiveHeapCheck, &J2dHeapCheck, &HostioHeapCheck, &CommandHeapCheck, -}; - -void printFrameLine() { - OSCalendarTime calendar; - OSTime time = OSGetTime(); - u32 retrace = VIGetRetraceCount(); - OSTicksToCalendarTime(time, &calendar); - - OS_REPORT("\x1b[44m-- %5d - %5d - %3d %d %04d/%02d/%02d %02d:%02d:%02d\'%03d\'\'%03d\n\x1b[m", - g_Counter.mCounter0, retrace, - calendar.yday, calendar.wday, calendar.year, calendar.mon, calendar.mday, - calendar.hour, calendar.min, calendar.sec, calendar.msec, calendar.usec); -} - -void HeapCheck::CheckHeap1() { - s32 totalUsedSize = mHeap->getTotalUsedSize(); - s32 freeSize = mHeap->getFreeSize(); - - if (mMaxTotalUsedSize < totalUsedSize) - mMaxTotalUsedSize = totalUsedSize; - - if (mMaxTotalFreeSize > freeSize) - mMaxTotalFreeSize = freeSize; -} - -void CheckHeap(u32 i_padNo) { - mDoMch_HeapCheckAll(); - OSCheckActiveThreads(); - - int saveRel = (mDoCPd_c::getHold(i_padNo) & ~PAD_TRIGGER_Z) == (PAD_TRIGGER_L + PAD_TRIGGER_R) && mDoCPd_c::getTrig(i_padNo) & PAD_TRIGGER_Z; - - for (int i = 0; i < 8; i++) { - HeapCheckTable[i]->CheckHeap1(); - if (saveRel) { - HeapCheckTable[i]->saveRelBase(); - } - } -} - -static int countUsed(JKRExpHeap* heap) { - OSDisableScheduler(); - - int counter = 0; - JKRExpHeap::CMemBlock* used_blocks_head = heap->getUsedFirst(); - while (used_blocks_head) { - counter++; - used_blocks_head = used_blocks_head->getNextBlock(); - } - - OSEnableScheduler(); - return counter; -} - -s32 HeapCheck::getUsedCount() const { - return countUsed(mHeap); -} - -void HeapCheck::heapDisplay() const { - s32 heap_size = mHeap->getHeapSize(); - s32 used_count = heap_size - getTargetHeapSize(); - - s32 total_used_size = mHeap->getTotalUsedSize(); - s32 total_free_size = mHeap->getTotalFreeSize(); - s32 heap_free_size = mHeap->getFreeSize(); - - JUTReport(100, 212, "[%sName]", mName); - JUTReport(100, 227, "HeapSize %8ld", heap_size); - JUTReport(100, 240, "TargetHeapSize %8ld", getTargetHeapSize()); - JUTReport(100, 253, "TotalFree %8ld", total_free_size - used_count); - JUTReport(100, 266, "FreeSize %8ld", heap_free_size - used_count); - JUTReport(100, 279, "TotalUsedSize %8ld", total_used_size); - JUTReport(100, 292, "TotalUsedRate %3ld%%", (int)(total_used_size * 100) / (int)getTargetHeapSize()); - JUTReport(100, 305, "MaxTotalUsedSize %8ld", mMaxTotalUsedSize); - JUTReport(100, 318, "MaxTotalUsedRate %3ld%%", (mMaxTotalUsedSize * 100) / (int)getTargetHeapSize()); - JUTReport(100, 331, "MinFreeSize %8ld", mMaxTotalFreeSize - used_count); - JUTReport(100, 344, "MinFreeRate %3ld%%", ((mMaxTotalFreeSize - used_count) * 100) / (int)getTargetHeapSize()); - JUTReport(100, 357, "UsedCount %3ld%", countUsed(mHeap)); -} - -#if DEBUG -int mDoMain::argument = -1; -#endif +#include +#include +#include +// --- GLOBALS --- s8 mDoMain::developmentMode = -1; - -#if DEBUG -u32 mDoMain::gameHeapSize = 0xFFFFFFFF; -u32 mDoMain::archiveHeapSize = 0xFFFFFFFF; -#endif - -u32 mDoMain::memMargin = 0xFFFFFFFF; - -#if DEBUG -int mDoMain::e3menu_no = -1; -#endif - -u8 mHeapBriefType = 4; - -#if DEBUG -static u8 memorycheck_check_frame; -#endif - -static u8 fillcheck_check_frame; - OSTime mDoMain::sPowerOnTime; - OSTime mDoMain::sHungUpTime; +u32 mDoMain::memMargin = 0xFFFFFFFF; +char mDoMain::COPYDATE_STRING[18] = "??/??/?? ??:??:??"; +const int audioHeapSize = 0x14D800; -static u8 mDisplayHeapSize; - -#if DEBUG -static u8 mReportDisable; -#endif - -static u8 mSelectHeapBar; - -#if DEBUG -static u8 mVisibleHeapBar; -static u8 mPrintFrameLine; -#endif - -static u8 mCheckHeap; - -#if DEBUG -mDoMain_HIO_c mDoMain_HIO; -#endif - -void debugDisplay() { - static const char* desc1[5] = { - "", "TotalFree", "MaxUsed ", "Used ", "RelUsed ", - }; - - static const char* desc2[5] = { - "", "/ MaxFree", "/HeapSize", "Blk/Bytes", "Blk/Bytes", - }; - - if (mSelectHeapBar >= 1 && mSelectHeapBar <= 6) { - HeapCheckTable[mSelectHeapBar - 1]->heapDisplay(); +// --- PC LOGGING CALLBACK --- +void aurora_log_callback(AuroraLogLevel level, const char* module, const char* message, + unsigned int len) { + const char* levelStr = "??"; + FILE* out = stdout; + switch (level) { + case LOG_DEBUG: + levelStr = "DEBUG"; + break; + case LOG_INFO: + levelStr = "INFO"; + break; + case LOG_WARNING: + levelStr = "WARNING"; + break; + case LOG_ERROR: + levelStr = "ERROR"; + out = stderr; + break; + case LOG_FATAL: + levelStr = "FATAL"; + out = stderr; + break; } - - if (mHeapBriefType == 5) { - JKRAramHeap* heap = JKRAram::getAramHeap(); - if (heap != NULL) { - JUTReport(475, 100, "ARAM Free"); - JUTReport(475, 114, "%d", heap->getFreeSize()); - JUTReport(475, 128, "TotalFree"); - JUTReport(475, 142, "%d", heap->getTotalFreeSize()); - } - return; - } - - if (mHeapBriefType != 0) { - JUT_ASSERT(596, mHeapBriefType < HeapCheckTableNum); - JUTReport(475, 100, "%s", desc1[mHeapBriefType]); - JUTReport(475, 114, "%s", desc2[mHeapBriefType]); - - for (int i = 0; i < 8; i++) { - HeapCheck* heap_check = HeapCheckTable[i]; - JKRExpHeap* expHeap = heap_check->getHeap(); - - s32 check1; - s32 check2; - switch (mHeapBriefType) { - case 1: - check1 = expHeap->getTotalFreeSize(); - check2 = expHeap->getFreeSize(); - break; - case 2: - check1 = heap_check->getMaxTotalUsedSize(); - check2 = expHeap->getHeapSize(); - break; - case 3: - check1 = heap_check->getUsedCount(); - check2 = expHeap->getTotalUsedSize(); - break; - case 4: - check1 = heap_check->getRelUsedCount(); - check2 = heap_check->getRelTotalUsedSize(); - break; - } - - JUTReport(475, (i * 44) + 150, " [%s]", heap_check->getName()); - JUTReport(475, (i * 44) + 164, "%10d", check1); - JUTReport(475, (i * 44) + 178, "%10d", check2); - } + fprintf(out, "[%s | %s] %s\n", levelStr, module, message); + if (level == LOG_FATAL) { + fflush(out); + abort(); } } -void my_genCheckBox(JORMContext* mctx, const char* label, u8* pSrc, u8 mask) { - mctx->genCheckBox(label, pSrc, mask); -} +// ========================================================================= +// LOAD_COPYDATE - PC Version using DvdEmu +// ========================================================================= +#define COPYDATE_PATH "/str/Final/Release/COPYDATE" -#if DEBUG -void mDoMain_HIO_c::genMessage(JORMContext* mctx) { - mctx->genSlider("コード破壊チェックフレーム", &memorycheck_check_frame, 0, 0xFF); - mctx->genButton("コード破壊チェックcheck", 0); - mctx->genButton("コード破壊チェックsave", 1); - mctx->genButton("コード破壊チェックdiff", 2); - mctx->genCheckBox("デバッグフィル", &mDoMch::mDebugFill, 0x1); - mctx->genSlider("ヒープ破壊チェックフレーム", &fillcheck_check_frame, 0, 0xFF); - mctx->genButton("ヒープ破壊チェック", 3); - mctx->genButton("ヒープFree領域フィル", 4); - mctx->genButton("浮動小数点例外を(再び)有効にする", 5); - mctx->genCheckBox("◎無効演算", &mDoMch::FpscrEnableBits, 0x80); - mctx->genCheckBox("○オーバー", &mDoMch::FpscrEnableBits, 0x40); - mctx->genCheckBox("△アンダー", &mDoMch::FpscrEnableBits, 0x20); - mctx->genCheckBox("○ゼロ除算", &mDoMch::FpscrEnableBits, 0x10); - mctx->genCheckBox("▲不正確 ", &mDoMch::FpscrEnableBits, 0x8); +s32 LOAD_COPYDATE(void*) { + char buffer[32]; + memset(buffer, 0, sizeof(buffer)); - mctx->genLabel("ソースファイル:m_Do_main.cpp", 0); - mctx->genCheckBox("OSReport 表示しない", &mReportDisable, 0x1); - mctx->genCheckBox("OSReport 優先度最高", &print_highPriority, 0x1); - mctx->genCheckBox("OSReport スレッド表示", &print_threadID, 0x1); - mctx->genCheckBox("OSReport CallerPC表示", &print_callerPC, 0x1); - mctx->genSlider("レベル", &print_callerPCLevel, 3, 10); + u32 size = 0; + void* data = DvdEmu::loadFile(COPYDATE_PATH, &size, nullptr); - mctx->startComboBox("簡易ヒープ表示", &mHeapBriefType); - mctx->genComboBoxItem("なし", 0); - mctx->genComboBoxItem("合計空き・最大空き", 1); - mctx->genComboBoxItem("最大使用量・ヒープサイズ元使用量", 2); - mctx->genComboBoxItem("使用ブロック数・元使用量", 3); - mctx->genComboBoxItem("相対 使用ブロック数・元使用量", 4); - mctx->endComboBox(); - - my_genCheckBox(mctx, "ヒープサイズ表示を行う", &mDisplayHeapSize, 1); - mctx->genCheckBox("ヒープバーを表示する", &mVisibleHeapBar, 0x1); - - mctx->startComboBox("ヒープバーの種類", &mSelectHeapBar); - mctx->genComboBoxItem("カレント", 0); - for (int i = 0; i < 8; i++) { - mctx->genComboBoxItem(HeapCheckTable[i]->getJName(), i + 1); + // Fallback: Try root if not found + if (!data) { + data = DvdEmu::loadFile("/COPYDATE", &size, nullptr); } - mctx->endComboBox(); - mctx->genCheckBox("ヒープチェック", &mCheckHeap, 0x1); - mctx->genCheckBox("フレームバー表示", &mPrintFrameLine, 0x1); + if (data) { + u32 copyLen = (size < sizeof(buffer) - 1) ? size : sizeof(buffer) - 1; + memcpy(buffer, data, copyLen); + buffer[copyLen] = '\0'; - mctx->startComboBox("GX警告レベル", &mDoMch::GXWarningLevel); - mctx->genComboBoxItem("エラー&警告なし", 0); - mctx->genComboBoxItem("致命的なエラー", 1); - mctx->genComboBoxItem("中警告と全エラー", 2); - mctx->genComboBoxItem("すべての警告", 3); - mctx->endComboBox(); - - mctx->genButton("GX警告を1フレームだけ実行", 9); - mctx->genButton("ダイナミックリンク状況をダンプ", 7); - mctx->genButton("ダイナミックリンクカウンタをリセット", 8); - mctx->genButton("ARAMヒープをダンプ", 10); - mctx->genButton("ゲームリソースをダンプ", 11); - mctx->genButton("RES_CONTROLをダンプ", 12); - mctx->genButton("ルートヒープをダンプ", 13); - mctx->genButton("システムヒープをダンプ", 14); - mctx->genButton("ゼルダヒープをダンプ", 15); - mctx->genButton("ゲームヒープをダンプ", 16); - mctx->genButton("アーカイブヒープをダンプ", 17); - mctx->genButton("J2Dヒープをダンプ", 18); - mctx->genButton("ホストIOヒープをダンプ", 19); - mctx->genButton("コマンドヒープをダンプ", 20); - - mctx->genCheckBox("ダイナミックリンク冗長表示", &DynamicModuleControlBase::verbose, 0x1); - mctx->genCheckBox("ヒープコールバック冗長表示", &mDoMch::myHeapVerbose, 0x1); - mctx->genCheckBox("ヒープコールバックチェック", &mDoMch::myHeapCallbackCheck, 0x1); - mctx->genCheckBox("mDoDvdThd::verbose冗長表示", &mDoDvdThd::verbose, 0x1); - mctx->genCheckBox("mDoDvdThd::DVDRead冗長表示", &mDoDvdThd::Report_DVDRead, 0x1); - mctx->genCheckBox("mDoDvdThd::DVDログモード", &mDoDvdThd::DVDLogoMode, 0x1); - mctx->genCheckBox("fopMsg::MemCheck ヒープチェック", &fopMsg::MemCheck, 0x1); -} - -void mDoMain_HIO_c::listenPropertyEvent(const JORPropertyEvent* property) { - JORMContext* mctx = attachJORMContext(8); - JORReflexible::listenPropertyEvent(property); - - if ((u32)property->id >= 13 && (u32)property->id <= 20) { - int sp14 = (u32)property->id - 13; - HeapCheck* heapCheck = HeapCheckTable[sp14]; - JUTReportConsole_f("\n[%sHeap]\n", heapCheck->getName()); - heapCheck->getHeap()->dump_sort(); +#ifdef _WIN32 + _aligned_free(data); +#else + free(data); +#endif } else { - switch ((u32)property->id) { - case 0: - FixedMemoryCheck::checkAll(); - break; - case 1: - FixedMemoryCheck::saveAll(); - break; - case 2: - FixedMemoryCheck::diffAll(); - break; - case 3: - mDoMch_HeapCheckAll(); - break; - case 4: - mDoMch_HeapFreeFillAll(); - break; - case 5: { - u32 fpscr = PPCMffpscr(); - JUTException::setFPException(0); - JUTException::setFPException(mDoMch::FpscrEnableBits); - PPCMtfpscr(fpscr); - break; - } - case 9: - GXSetVerifyLevel(GX_WARN_ALL); - mDoMch::GXWarningExecuteFrame = TRUE; - break; - case 7: { - int RoomId = dComIfGp_roomControl_getStayNo(); - JUTReportConsole_f("\nRoomId = %d\n", RoomId); - - JUTReportConsole_f("\nDynamicModule\n"); - DynamicModuleControlBase::dump(); - break; - } - case 8: - DynamicModuleControlBase::resetDoLinkCount(); - break; - case 10: { - JUTReportConsole_f("\nAramHeap\n"); - JKRAramHeap* aramHeap = JKRAram::getAramHeap(); - if (aramHeap != NULL) { - aramHeap->dump(); - } - break; - } - case 11: - JUTReportConsole_f("\nGameResource\n"); - g_dComIfG_gameInfo.mResControl.dump(); - break; - case 12: - JUTReportConsole_f("\nResControl\n"); - dComIfG_dumpResControl(); - break; - case 6: - default: - if ((u8*)property->id == &mDisplayHeapSize) { - mctx->startUpdateNode(this); - mctx->endUpdateNode(); - } - - if ((u8*)property->id == &mReportDisable) { - if (mReportDisable == 0) { - OSReportEnable(); - } else { - OSReportDisable(); - } - } - - if ((u8*)property->id == &mSelectHeapBar) { - JKRHeap* heap = NULL; - u32 select_heap = mSelectHeapBar - 1; - if (select_heap < 8) { - heap = HeapCheckTable[select_heap]->getHeap(); - } - - JUTProcBar::getManager()->setWatchHeap(heap); - } - - if ((u8*)property->id == &mVisibleHeapBar) { - JUTProcBar::getManager()->setVisibleHeapBar(mVisibleHeapBar); - } - - if ((u8*)property->id == &mDoMch::GXWarningLevel) { - GXSetVerifyLevel((GXWarningLevel)mDoMch::GXWarningLevel); - } - - if ((u8*)property->id == &mDoMch::mDebugFill) { - JKRHeap::setDefaultDebugFill(mDoMch::mDebugFill); - - for (JSUTree* i = JKRGetRootHeap()->getHeapTree().getFirstChild(); i != NULL; i = i->getNextChild()) { - JKRHeap* heap = i->getObject(); - heap->setDebugFill(mDoMch::mDebugFill); - } - } - - JKRSetDebugFillNotuse(mDoMch::mDebugFillNotUse); - JKRSetDebugFillNew(mDoMch::mDebugFillNew); - JKRSetDebugFillDelete(mDoMch::mDebugFillDelete); - } + strcpy(buffer, "PC PORT BUILD"); + OSReport("Warning: COPYDATE file not found at %s\n", COPYDATE_PATH); } - releaseJORMContext(mctx); + memcpy(mDoMain::COPYDATE_STRING, buffer, sizeof(mDoMain::COPYDATE_STRING) - 1); + mDoMain::COPYDATE_STRING[sizeof(mDoMain::COPYDATE_STRING) - 1] = '\0'; + + OS_REPORT("\x1b[36mCOPYDATE=[%s]\n\x1b[m", mDoMain::COPYDATE_STRING); + return 1; } -#endif -bool Debug_console(u32 i_padNo) { +void main01(void) { + OS_REPORT("\x1b[m"); + GXSetColorUpdate(GX_ENABLE); + // 1. Setup + mDoMch_Create(); + mDoGph_Create(); + mDoCPd_c::create(); + + // Console Setup JUTConsole* console = JFWSystem::getSystemConsole(); - if (console != NULL) { - static f32 console_position_x = 20.0f; - static f32 console_position_y = 30.0f; - static f32 console_scroll = 0.0f; - - if (mDoCPd_c::getTrig(i_padNo) & PAD_TRIGGER_Z && !(mDoCPd_c::getHold(i_padNo) & ~PAD_TRIGGER_Z)) { - console->setVisible(console->isVisible() == false); - JUTAssertion::setMessageCount(0); - } - - if (console->isVisible()) { - if ((mDoCPd_c::getHold(i_padNo) & PAD_TRIGGER_L && mDoCPd_c::getHold(i_padNo) & PAD_TRIGGER_R) || - ((mDoCPd_c::getAnalogL(i_padNo) > 0.0f && mDoCPd_c::getAnalogR(i_padNo) > 0.0f))) - { - f32 stick_x = mDoCPd_c::getStickX(i_padNo); - f32 stick_y = mDoCPd_c::getStickY(i_padNo); - - if (mDoCPd_c::getHold(i_padNo) & (PAD_BUTTON_Y | PAD_BUTTON_X) && - mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_START) - { - console->clear(); - } - - if (!(mDoCPd_c::getHold(i_padNo) & (PAD_BUTTON_Y | PAD_BUTTON_X))) { - console_scroll -= stick_y; - - int scrollAmount; - if (console_scroll > 1.0f) { - scrollAmount = console_scroll; - } else if (console_scroll < -1.0f) { - scrollAmount = -(int)-console_scroll; - } else { - scrollAmount = 0; - } - - if (scrollAmount != 0) { - console_scroll -= scrollAmount; - console->scroll(scrollAmount); - } - } else { - if (mDoCPd_c::getHold(i_padNo) & PAD_BUTTON_X) { - console_position_x += stick_x; - } - - if (mDoCPd_c::getHold(i_padNo) & PAD_BUTTON_Y) { - console_position_y -= stick_y; - } - } - - if (mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_A) { - console->dumpToTerminal(0xFFFFFFFF); - console->setOutput(JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE); - } - - JUTReport(30, 390, 1, "Press X+Y+START to CLEAR console."); - JUTReport(30, 400, 1, "3DStick UP/Down to scroll"); - JUTReport(30, 410, 1, "Press A to output terminal from console."); - JUTReport(30, 420, 1, "SCROLL:%3d %3d %3d Output=%1x", console->getLineOffset(), - console->getPositionX(), console->getPositionY(), console->getOutput()); - } else { - if (mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_DOWN) { - g_HIO.mDisplayMeter ^= (u8)1; - } - - if (mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_LEFT) { - JKRAramHeap* aram = JKRAram::getAramHeap(); - if (aram != NULL) { - aram->dump(); - } - - DynamicModuleControlBase::dump(); - g_dComIfG_gameInfo.mResControl.dump(); - } - - if (mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_RIGHT) { - JKRGetSystemHeap()->dump_sort(); - } - - if (mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_UP) { - zeldaHeap->dump_sort(); - gameHeap->dump_sort(); - archiveHeap->dump_sort(); - } - - JUTReport(30, 440, 1, "Press L+R trigger to control console."); - JUTReport(30, 450, 1, "Press [Z] trigger to close this window."); - } - - console->setPosition(console_position_x, console_position_y); - return 1; - } + if (console) { + console->setOutput(mDoMain::developmentMode ? JUTConsole::OUTPUT_OSR_AND_CONSOLE : + JUTConsole::OUTPUT_NONE); + console->setPosition(32, 42); } + // Loader Init + mDoDvdThd_callback_c::create((mDoDvdThd_callback_func)LOAD_COPYDATE, NULL); + + OSReport("Calling fapGm_Create()...\n"); + fapGm_Create(); + + OSReport("Calling fopAcM_initManager()...\n"); + fopAcM_initManager(); + + OSReport("Calling cDyl_InitAsync()...\n"); + cDyl_InitAsync(); + + mDoAud_zelAudio_c::onInitFlag(); + + OSReport("Entering Main Loop (main01)...\n"); + + + do { + // 1. Update Window Events + const AuroraEvent* event = aurora_update(); + if (event && event->type == AURORA_EXIT) + break; + + static u32 frame = 0; + frame++; + + + + // Game Inputs + mDoCPd_c::read(); + + VIWaitForRetrace(); + + // EXECUTE GAME LOGIC & RENDER + // This calls mDoGph_Painter -> JFWDisplay -> GX Functions + fapGm_Execute(); + + mDoAud_Execute(); + + + //aurora_end_frame(); + + // Limiter + std::this_thread::sleep_for(std::chrono::milliseconds(16)); + + } while (true); +} + +// ========================================================================= +// PC ENTRY POINT +// ========================================================================= +int game_main(int argc, char* argv[]) { + // 1. Aurora Init + AuroraConfig config{}; + config.appName = "Zelda: Twilight Princess"; + config.desiredBackend = BACKEND_VULKAN; + config.windowPosX = 100; + config.windowPosY = 100; + config.windowWidth = 640; + config.windowHeight = 480; + config.configPath = "."; + config.logCallback = &aurora_log_callback; + + aurora_initialize(argc, argv, &config); + + // 2. Setup Virtual Game RAM + // Simulates Gamecube RAM (24MB + Audio etc, we take 256MB) +#define GAME_RAM_SIZE (256 * 1024 * 1024) + void* virtualGameRam = calloc(1, GAME_RAM_SIZE); + if (!virtualGameRam) { + printf("Fatal: Failed to allocate game RAM\n"); + return -1; + } + OSSetArenaLo(virtualGameRam); + OSSetArenaHi((char*)virtualGameRam + GAME_RAM_SIZE); + + // 3. Init DVD Emulation + DvdEmu::setBasePath("data"); + + mDoMain::sPowerOnTime = OSGetTime(); + + // Reset Data + static mDoRstData sResetData = {0}; + mDoRst::setResetData(&sResetData); + mDoRst::offReset(); + mDoRst::setLogoScnFlag(0); + + // Global Context Init + dComIfG_ct(); + + // Development Mode + mDoMain::developmentMode = 1; // Force Dev Mode for Debugging + mDoDvdThd::SyncWidthSound = false; + + OSReport("Starting main01 (Game Loop)...\n"); + + + main01(); + + aurora_shutdown(); + free(virtualGameRam); + return 0; } -#if PLATFORM_GCN -#define COPYDATE_PATH "/str/Final/Release/COPYDATE" -#else -#define COPYDATE_PATH "/str/RVL/Debug/COPYDATE" -#endif - -s32 LOAD_COPYDATE(void*) { - DVDFileInfo ATTRIBUTE_ALIGN(32) fileInfo; - u8 buffer[32]; - - BOOL status = DVDOpen(COPYDATE_PATH, &fileInfo); - if (status) { - s32 rt = DVDReadPrio(&fileInfo, &buffer, sizeof(buffer), 0, 2); - memcpy(mDoMain::COPYDATE_STRING, buffer, sizeof(mDoMain::COPYDATE_STRING) - 1); - status = DVDClose(&fileInfo); - } - - OS_REPORT("\x1b[36mCOPYDATE=[%s]\n\x1b[m", mDoMain::COPYDATE_STRING); - return status; -} - -static void debug() { - #if DEBUG - if (mPrintFrameLine) { - printFrameLine(); - } - #endif - - if (mDoMain::developmentMode) { - if (mCheckHeap) { - CheckHeap(PAD_3); - } - - if ((mDoCPd_c::getGamePad(PAD_3)->getButton() & ~PAD_TRIGGER_Z) == PAD_TRIGGER_R && - mDoCPd_c::getGamePad(PAD_3)->testTrigger(PAD_TRIGGER_Z)) - { - mDisplayHeapSize ^= (u8)1; - } - - if (mDisplayHeapSize) { - if ((mDoCPd_c::getGamePad(PAD_3)->getButton() & ~PAD_TRIGGER_Z) == PAD_TRIGGER_L && - mDoCPd_c::getGamePad(PAD_3)->testTrigger(PAD_TRIGGER_Z)) - { - if (mHeapBriefType < 5) { - mHeapBriefType++; - } else { - mHeapBriefType = 1; - } - } - - debugDisplay(); - } - - #if DEBUG - if (!dDebugPad.Active()) { - Debug_console(PAD_3); - } - #else - Debug_console(PAD_3); - #endif - - #if DEBUG - fapGm_HIO_c::startCpuTimer(); - - if (fapGmHIO_getHostIO()) { - JKRHeap* var_r30 = mDoExt_getHostIOHeap(); - JKRHeap* var_r29 = mDoExt_setCurrentHeap(var_r30); - JOR_MESSAGELOOP(); - mDoExt_setCurrentHeap(var_r29); - } - - fapGm_HIO_c::printCpuTimer(""); - fapGm_HIO_c::stopCpuTimer("ホストIO"); - fapGm_HIO_c::printCpuTimer("\n↑↑↑↑↑↑↑↑↑↑ CPU時間計測終了 ↑↑↑↑↑↑↑↑↑↑\n"); - fapGm_HIO_c::offCpuTimer(); - #endif - } -} - -// linker generated symbols -extern u8 _f_text[]; -extern u8 _e_text[]; -extern u8 _f_ctors[]; -extern u8 _e_ctors[]; -extern u8 _f_dtors[]; -extern u8 _e_dtors[]; -extern u8 _f_rodata[]; -extern u8 _e_rodata[]; - -#if VERSION == VERSION_SHIELD_DEBUG -const int audioHeapSize = 0x169000; -#else -const int audioHeapSize = 0x14D800; -#endif - -void main01(void) { - OS_REPORT("\x1b[m"); - - // Setup heaps, setup exception manager, set RNG seed, setup DVDError Thread, setup Memory card Thread - mDoMch_Create(); - - #if DEBUG - FixedMemoryCheck* local_20 = FixedMemoryCheck::easyCreate(_f_text, intptr_t(_e_text - _f_text)); - FixedMemoryCheck* local_24 = FixedMemoryCheck::easyCreate(_f_ctors, intptr_t(_e_ctors - _f_ctors)); - FixedMemoryCheck* local_28 = FixedMemoryCheck::easyCreate(_f_dtors, intptr_t(_e_dtors - _f_dtors)); - FixedMemoryCheck* local_2c = FixedMemoryCheck::easyCreate(_f_rodata, intptr_t(_e_rodata - _f_rodata)); - #endif - - // setup FrameBuffer and ZBuffer, init display lists - mDoGph_Create(); - - // Setup control pad - mDoCPd_c::create(); - - RootHeapCheck.setHeap((JKRExpHeap*)JKRGetRootHeap()); - SystemHeapCheck.setHeap((JKRExpHeap*)JKRGetSystemHeap()); - ZeldaHeapCheck.setHeap(mDoExt_getZeldaHeap()); - GameHeapCheck.setHeap(mDoExt_getGameHeap()); - ArchiveHeapCheck.setHeap(mDoExt_getArchiveHeap()); - J2dHeapCheck.setHeap(mDoExt_getJ2dHeap()); - HostioHeapCheck.setHeap(mDoExt_getHostIOHeap()); - CommandHeapCheck.setHeap(mDoExt_getCommandHeap()); - - #if DEBUG - JKRHeap* var_r28 = mDoExt_getHostIOHeap(); - JKRHeap* sp10 = mDoExt_setCurrentHeap(var_r28); - JOR_INIT(); - JOR_SETROOTNODE("root", &mDoHIO_root, 4, 3); - mDoExt_setCurrentHeap(sp10); - - var_r28->dump_sort(); - s32 local_34 = var_r28->getTotalFreeSize(); - OSReport("\x1b[36mHOSTIOヒープ残り %u Bytes\n\x1b[m", local_34); - #endif - - JUTConsole* console = JFWSystem::getSystemConsole(); - console->setOutput(mDoMain::developmentMode ? JUTConsole::OUTPUT_OSR_AND_CONSOLE : - JUTConsole::OUTPUT_NONE); - console->setPosition(32, 42); - - mDoDvdThd_callback_c::create((mDoDvdThd_callback_func)LOAD_COPYDATE, NULL); - fapGm_Create(); // init framework - - #if DEBUG - mDoMain_HIO.entryHIO("メイン"); - g_regHIO.id = mDoHIO_createChild("レジスタ", &g_regHIO); - g_presetHIO.field_0x4 = mDoHIO_createChild("状況ファイル", &g_presetHIO); - #endif - - fopAcM_initManager(); - mDisplayHeapSize = 0; - cDyl_InitAsync(); // init RELs - - g_mDoAud_audioHeap = JKRCreateSolidHeap(audioHeapSize, JKRGetCurrentHeap(), false); - - do { - static u32 frame; - frame++; - - #if DEBUG - if (memorycheck_check_frame != 0 && frame % memorycheck_check_frame == 0) { - FixedMemoryCheck::checkAll(); - } - #endif - - if (fillcheck_check_frame != 0 && frame % fillcheck_check_frame == 0) { - mDoMch_HeapCheckAll(); - } - - if (mDoDvdThd::SyncWidthSound) { - mDoMemCd_UpDate(); - } - - mDoCPd_c::read(); // read controller input - - #if DEBUG - if (mDoMch::GXWarningExecuteFrame) { - GXSetVerifyLevel(GX_WARN_ALL); - } - #endif - - fapGm_Execute(); // handle game execution - - #if DEBUG - if (mDoMch::GXWarningExecuteFrame) { - mDoMch::GXWarningExecuteFrame = 0; - GXSetVerifyLevel((GXWarningLevel)mDoMch::GXWarningLevel); - } - #endif - - #if DEBUG - fapGm_HIO_c::startCpuTimer(); - #endif - - mDoAud_Execute(); // handle audio execution - - #if DEBUG - fapGm_HIO_c::printCpuTimer(""); - fapGm_HIO_c::stopCpuTimer("オーディオ"); - #endif - - debug(); // run debugger - } while (true); -} - -#if DEBUG -JHIComPortManager* JHIComPortManager:: instance; - -// DEBUG NONMATCHING -void parse_args(int argc, const char* argv[]) { - int i; - - OS_REPORT("argc = %d\n", argc); - for (i = 0; i < argc; i++) { - OS_REPORT("argv[%d] = %s\n", i, argv[i]); - } - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "--noopening") == 0) { - dScnLogo_c::onOpeningCut(); - } else if (strcmp(argv[i], "--nobank") == 0) { - dStage_roomControl_c::onNoArcBank(); - OS_REPORT("\x1b[33mアーカイブバンクを無効にしました\n\x1b[m"); - } else if (strcmp(argv[i], "--particle254") == 0) { - fapGm_HIO_c::mParticle254Fix = 1; - OSReport_Warning("パーティクル254固定にしました\n"); - } else if (strncmp(argv[i], "--menu=", sizeof("--menu=") - 1) == 0) { - char* var_r27 = strchr(argv[i] + 7, ','); - if (var_r27 != NULL) { - *var_r27 = 0; - var_r27++; - - char* var_r26 = std::strchr(var_r27, ','); - if (var_r26 != NULL) { - *var_r26 = 0; - var_r26++; - - char* spC = std::strchr(var_r26, ','); - if (spC != NULL) { - *spC = 0; - spC++; - sscanf(spC, "%d", &dScnMenu_c::cursolPoint); - dScnMenu_c::m_error_flags |= (u8)8; - } - - sscanf(var_r26, "%d", &dScnMenu_c::cursolLayer); - dScnMenu_c::m_error_flags |= (u8)4; - } - - sscanf(var_r27, "%d", &dScnMenu_c::cursolRoomNo); - dScnMenu_c::m_error_flags |= (u8)2; - } - - strcpy(dScnMenu_c::cursolStageName, argv[i] + 7); - dScnMenu_c::m_error_flags |= (u8)1; - - OS_REPORT("\n\n\ndScnMenu_c::cursolLayer=[%x]", dScnMenu_c::cursolLayer); - OS_REPORT("\ndScnMenu_c::cursolRoomNo=[%x]", dScnMenu_c::cursolRoomNo); - OS_REPORT("\ndScnMenu_c::cursolStageName=[%s]\n\n", dScnMenu_c::cursolStageName); - } else if (strncmp(argv[i], "--situation=", sizeof("--situation=") - 1) == 0) { - for (int j = 0; j < 100; j++) { - if (argv[i][12 + j] <= ' ') { - break; - } - - g_presetHIO.filename_buf[j] = argv[i][12 + j]; - } - - OS_REPORT("\n11 g_presetHIO.filename_buf[0]=[%-100.100s]", g_presetHIO.filename_buf); - } else if (strcmp(argv[i], "--noprint") == 0) { - OSReportDisable(); - } else if (strcmp(argv[i], "--develop") == 0) { - mDoMain::developmentMode = 1; - } else if (strcmp(argv[i], "--nodevelop") == 0) { - mDoMain::developmentMode = 0; - } else if (strncmp(argv[i], "--e3argument=", sizeof("--e3argument=") - 1) == 0) { - sscanf(argv[i] + sizeof("--e3argument=") - 1, "%d", &mDoMain::argument); - } else if (strncmp(argv[i], "--gameheapsize=0x", sizeof("--gameheapsize=0x") - 1) == 0) { - sscanf(argv[i] + sizeof("--gameheapsize=0x") - 1, "%x", &mDoMain::gameHeapSize); - } else if (strncmp(argv[i], "--archiveheapsize=0x", sizeof("--archiveheapsize=0x") - 1) == 0) { - sscanf(argv[i] + sizeof("--archiveheapsize=0x") - 1, "%x", &mDoMain::archiveHeapSize); - } else if (strncmp(argv[i], "--memmargin=0x", sizeof("--memmargin=0x") - 1) == 0) { - sscanf(argv[i] + sizeof("--memmargin=0x") - 1, "%x", &mDoMain::memMargin); - } else if (strncmp(argv[i], "--e3menu=0x", sizeof("--e3menu=0x") - 1) == 0) { - sscanf(argv[i] + sizeof("--e3menu=0x") - 1, "%x", &mDoMain::e3menu_no); - } else { - OSReport_Error("unknown argument %d, %s\n", i, argv[i]); - } - } -} -#endif - -static u8 mainThreadStack[32768]; - -OSThread mainThread; - -void game_main(int argc, const char* argv[]) { - OSThread* current_thread = OSGetCurrentThread(); - u8* stack = mainThreadStack; - mDoMain::sPowerOnTime = OSGetTime(); - OSReportInit(); - version_check(); - - #if PLATFORM_WII || PLATFORM_SHIELD - mDoRst::setResetData((mDoRstData*)OSAllocFromMEM1ArenaLo(0x18, 4)); - #else - mDoRst::setResetData((mDoRstData*)OSAllocFromArenaLo(0x18, 4)); - #endif - - if (!mDoRst::getResetData()) { - do { - } while (true); - } - - if (!((OSGetResetCode() & 0x80000000) ? 1 : 0)) { - mDoRst::offReset(); - mDoRst::offResetPrepare(); - mDoRst::off3ButtonReset(); - mDoRst::set3ButtonResetPort(-1); - mDoRst::setLogoScnFlag(0); - mDoRst::setProgSeqFlag(0); - mDoRst::setProgChgFlag(0); - mDoRst::setWarningDispFlag(0); - mDoRst::offShutdown(); - mDoRst::offReturnToMenu(); - } - - #if PLATFORM_WII || PLATFORM_SHIELD - SCInit(); - #endif - - dComIfG_ct(); - - #if PLATFORM_WII || PLATFORM_SHIELD - u32 status; - do { - status = SCCheckStatus(); - } while (status != 0); - JUT_ASSERT(1785, status != 2); - #endif - - #if DEBUG - parse_args(argc, argv); - #endif - - if (mDoMain::developmentMode < 0) { - DVDDiskID* disk_id = DVDGetCurrentDiskID(); - - if (disk_id->gameVersion > 0x90) { - mDoMain::developmentMode = 1; - } else if (disk_id->gameVersion > 0x80) { - mDoMain::developmentMode = (OSGetConsoleType() & OS_CONSOLE_DEVELOPMENT) != 0; - } else { - mDoMain::developmentMode = 0; - } - } - - OS_REPORT("メインスレッドを作成します\n"); - OSCreateThread(&mainThread, (void*(*)(void*))main01, 0, stack + sizeof(mainThreadStack), sizeof(mainThreadStack), OSGetThreadPriority(current_thread), 0); - OSResumeThread(&mainThread); - OS_REPORT("メインスレッドを起動しました <%x>\n", &mainThread); - OSSetThreadPriority(current_thread, 0x1F); - OSSuspendThread(current_thread); -} bool JKRHeap::dump_sort() { return true; } -template<> +template +JHIComPortManager* JHIComPortManager::instance = nullptr; + +template <> +JHIComPortManager* JHIComPortManager::instance = nullptr; + +template <> Z2WolfHowlMgr* JASGlobalInstance::sInstance; -template<> +template <> Z2EnvSeMgr* JASGlobalInstance::sInstance; -template<> +template <> Z2FxLineMgr* JASGlobalInstance::sInstance; -template<> +template <> Z2Audience* JASGlobalInstance::sInstance; -template<> +template <> Z2SoundObjMgr* JASGlobalInstance::sInstance; -template<> +template <> Z2SoundInfo* JASGlobalInstance::sInstance; -template<> +template <> JAUSoundInfo* JASGlobalInstance::sInstance; -template<> +template <> JAUSoundNameTable* JASGlobalInstance::sInstance; -template<> +template <> JAUSoundTable* JASGlobalInstance::sInstance; -template<> +template <> JAISoundInfo* JASGlobalInstance::sInstance; -template<> +template <> Z2SoundMgr* JASGlobalInstance::sInstance; -template<> +template <> JAIStreamMgr* JASGlobalInstance::sInstance; -template<> +template <> JAISeqMgr* JASGlobalInstance::sInstance; -template<> +template <> JAISeMgr* JASGlobalInstance::sInstance; -template<> +template <> Z2SpeechMgr2* JASGlobalInstance::sInstance; -template<> +template <> Z2SoundStarter* JASGlobalInstance::sInstance; -template<> +template <> JAISoundStarter* JASGlobalInstance::sInstance; -template<> +template <> Z2StatusMgr* JASGlobalInstance::sInstance; -template<> +template <> Z2SceneMgr* JASGlobalInstance::sInstance; -template<> +template <> Z2SeqMgr* JASGlobalInstance::sInstance; -template<> +template <> Z2SeMgr* JASGlobalInstance::sInstance; -template<> +template <> JASAudioThread* JASGlobalInstance::sInstance; -template<> +template <> JASDefaultBankTable* JASGlobalInstance::sInstance; diff --git a/src/m_Do/m_Do_printf.cpp b/src/m_Do/m_Do_printf.cpp index 154d54c737..0350811da9 100644 --- a/src/m_Do/m_Do_printf.cpp +++ b/src/m_Do/m_Do_printf.cpp @@ -124,9 +124,13 @@ void mDoPrintf_vprintf_Interrupt(char const* fmt, va_list args) { BOOL interruptStatus = OSDisableInterrupts(); if (!data_80450BB5) { data_80450BB5 = true; +#if TARGET_PC + vprintf(fmt, args); +#else uintptr_t var_r29 = (uintptr_t)&mDoPrintf_FiberStack + sizeof(mDoPrintf_FiberStack); OSSwitchFiberEx((uintptr_t)fmt, (uintptr_t)args, 0, 0, (uintptr_t)vprintf, var_r29); +#endif data_80450BB5 = false; } OSRestoreInterrupts(interruptStatus); @@ -228,9 +232,14 @@ void OSReport_Error(const char* fmt, ...) { va_list args; va_start(args, fmt); OSReportForceEnableOn(); +#if TARGET_PC + my_PutString("\x1B[31m[ERROR]\x1B[m "); + OSVReport(fmt, args); +#else my_PutString("\x1B[41;37m[ERROR]"); OSVReport(fmt, args); my_PutString("\x1B[m"); +#endif OSReportForceEnableOff(); fflush(stdout); va_end(args);