mirror of
				https://github.com/Zelda64Recomp/Zelda64Recomp.git
				synced 2025-10-30 08:03:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include "patches.h"
 | 
						|
#include "misc_funcs.h"
 | 
						|
 | 
						|
void Message_FindMessage(PlayState* play, u16 textId);
 | 
						|
extern SceneEntranceTableEntry sSceneEntranceTable[];
 | 
						|
 | 
						|
char text_buffer[1024];
 | 
						|
 | 
						|
void do_warp(PlayState* play, u16 entrance){
 | 
						|
    play->nextEntrance = entrance;
 | 
						|
    gSaveContext.save.entrance = play->nextEntrance;
 | 
						|
    play->state.running = false;
 | 
						|
    play->state.init = gGameStateOverlayTable[GAMESTATE_PLAY].init;
 | 
						|
    play->state.size = gGameStateOverlayTable[GAMESTATE_PLAY].instanceSize;
 | 
						|
 | 
						|
    // Gets the ingame name, may be useful for mods later on
 | 
						|
    // SceneEntranceTableEntry* scene_entrance_table_entry = &sSceneEntranceTable[entrance >> 9];
 | 
						|
    // if (scene_entrance_table_entry->table) {
 | 
						|
    //     EntranceTableEntry* entrance_table_entry = scene_entrance_table_entry->table[0];
 | 
						|
    //     recomp_printf("entrance_table_entry: 0x%08X\n", (uintptr_t)entrance_table_entry);
 | 
						|
    //     int scene_id = ABS(entrance_table_entry->sceneId);
 | 
						|
    //     recomp_printf("scene_id: %d\n", scene_id);
 | 
						|
 | 
						|
    //     SceneTableEntry* scene = &gSceneTable[scene_id];
 | 
						|
    //     int title_text_id = scene->titleTextId;
 | 
						|
    //     recomp_printf("title_text_id: %d\n", title_text_id);
 | 
						|
        
 | 
						|
    //     recomp_printf("play->msgCtx.messageEntryTable: 0x%08X\n", (uintptr_t)play->msgCtx.messageEntryTableNes);
 | 
						|
 | 
						|
    //     Message_FindMessageNES(play, title_text_id);
 | 
						|
 | 
						|
    //     recomp_printf("font->messageStart: 0x%08X font->messageEnd: 0x%08X\n", play->msgCtx.font.messageStart, play->msgCtx.font.messageEnd);
 | 
						|
 | 
						|
    //     DmaRequest req;
 | 
						|
    //     req.vromAddr = play->msgCtx.font.messageStart + SEGMENT_ROM_START(message_data_static);
 | 
						|
    //     req.dramAddr = text_buffer;
 | 
						|
    //     req.size = play->msgCtx.font.messageEnd;
 | 
						|
    //     recomp_printf("dma from vrom 0x%08X to vram 0x%08x of 0x%04X bytes\n", req.vromAddr, req.dramAddr, req.size);
 | 
						|
    //     DmaMgr_ProcessMsg(&req);
 | 
						|
 | 
						|
    //     if (text_buffer[2] != (char)0xFE) {
 | 
						|
    //         recomp_printf("Invalid text\n");
 | 
						|
    //         *(volatile int*)0 = 0;
 | 
						|
    //     }
 | 
						|
 | 
						|
    //     recomp_printf("text_buffer: %s\n", text_buffer + 11);
 | 
						|
    // }
 | 
						|
    // int scene = (entrance & 0xFF00) >> 8;
 | 
						|
}
 | 
						|
 | 
						|
void debug_play_update(PlayState* play) {
 | 
						|
    u16 pending_warp = recomp_get_pending_warp();
 | 
						|
    if (pending_warp != 0xFFFF) {
 | 
						|
        do_warp(play, pending_warp);
 | 
						|
    }
 | 
						|
 | 
						|
    u32 pending_set_time = recomp_get_pending_set_time();
 | 
						|
    if (pending_set_time != 0xFFFF) {
 | 
						|
        u8 day    = (pending_set_time >> 16) & 0xFF;
 | 
						|
        u8 hour   = (pending_set_time >>  8) & 0xFF;
 | 
						|
        u8 minute = (pending_set_time >>  0) & 0xFF;
 | 
						|
 | 
						|
        gSaveContext.save.time = CLOCK_TIME(hour, minute);
 | 
						|
        gSaveContext.save.day = day;
 | 
						|
    }
 | 
						|
}
 |