diff --git a/Firm_Saturn/cdblock.c b/Firm_Saturn/cdblock.c index 1314781..73f621d 100644 --- a/Firm_Saturn/cdblock.c +++ b/Firm_Saturn/cdblock.c @@ -873,6 +873,9 @@ int my_bios_loadcd_read(void) return 0; } +extern int to_stm32; +extern int gets_from_stm32; + int read_1st(void) { printk("Read main ...\n"); @@ -882,6 +885,14 @@ int read_1st(void) go(); patch_game((char*)0x06002020); + + if(game_break_pc){ + set_break_pc(game_break_pc, 0); + install_ubr_isr(); + to_stm32 = 1; + gets_from_stm32 = 1; + *(u32*)(0x22820000) = 0; + } } diff --git a/Firm_Saturn/main.c b/Firm_Saturn/main.c index 4c3d6ea..bf74a91 100644 --- a/Firm_Saturn/main.c +++ b/Firm_Saturn/main.c @@ -87,25 +87,22 @@ int smpc_cmd(int cmd) /**********************************************************/ + void stm32_puts(char *str) { u32 stm32_base = 0x22820000; int i, len; - //len = strlen(str); - //len += 1; - len = 32; - *(u16*)(stm32_base+0x00) = len; + len = strlen(str); + LE32W((void*)(stm32_base+0), len); - for(i=0; i "); n = 0; esc = 0; @@ -309,8 +323,7 @@ void sci_shell(void) u32 addr = 0; if(argc>0) addr = arg[0]; if(addr){ - skip_patch = 1; - break_in_game(addr, NULL); + game_break_pc = addr; } } diff --git a/Firm_Saturn/ubr_debug.c b/Firm_Saturn/ubr_debug.c index c3e0958..1b67b48 100644 --- a/Firm_Saturn/ubr_debug.c +++ b/Firm_Saturn/ubr_debug.c @@ -12,8 +12,8 @@ void debug_shell(void *arg); static int auto_break; -static int game_break_pc; -static void (*game_break_handle)(REGS *reg); +int game_break_pc; +void (*game_break_handle)(REGS *reg); /**********************************************************/ diff --git a/Firm_v12_STM32H750/Main/shell.c b/Firm_v12_STM32H750/Main/shell.c index 0ea9c32..faad63a 100644 --- a/Firm_v12_STM32H750/Main/shell.c +++ b/Firm_v12_STM32H750/Main/shell.c @@ -205,6 +205,13 @@ void simple_shell(void) while(1){ gets(cmd, 128); + if(strncmp(cmd, "ss ", 3)==0){ + int len = strlen(cmd+3); + strcpy((u8*)0x61820010, cmd+3); + *(u8*)0x61820000 = len; + continue; + } + char *sp = strchr(cmd, ' '); if(sp){ *sp = 0; diff --git a/Firm_v12_STM32H750/Main/uart4.c b/Firm_v12_STM32H750/Main/uart4.c index 57f100a..9233b55 100644 --- a/Firm_v12_STM32H750/Main/uart4.c +++ b/Firm_v12_STM32H750/Main/uart4.c @@ -216,8 +216,8 @@ void uart4_init(void) UART4->CR2 = 0; UART4->CR3 = 0x64000000; UART4->BRR = 0x0; // Reset - UART4->BRR = 0x0364; // 设置波特比率寄存器为115200(100M/115200) -// UART4->BRR = 0x0064; // 设置波特比率寄存器为1M(100M/1M) +// UART4->BRR = 0x0364; // 设置波特比率寄存器为115200(100M/115200) + UART4->BRR = 0x0064; // 设置波特比率寄存器为1M(100M/1M) UART4->RQR = 0x0018; UART4->CR1 |= 0x0001; // Enable UART4 diff --git a/Firm_v12_STM32H750/Saturn/saturn_cdc.c b/Firm_v12_STM32H750/Saturn/saturn_cdc.c index 6142d00..4776458 100644 --- a/Firm_v12_STM32H750/Saturn/saturn_cdc.c +++ b/Firm_v12_STM32H750/Saturn/saturn_cdc.c @@ -804,7 +804,7 @@ int get_subcode(void) } type = cdb.cr1&0xff; - SSLOG(_INFO, "get_subcode: type=%d\n", type); + //SSLOG(_INFO, "get_subcode: type=%d\n", type); if(type==0){ // Get Q Channel diff --git a/Firm_v12_STM32H750/Saturn/saturn_main.c b/Firm_v12_STM32H750/Saturn/saturn_main.c index ed73795..9bafd81 100644 --- a/Firm_v12_STM32H750/Saturn/saturn_main.c +++ b/Firm_v12_STM32H750/Saturn/saturn_main.c @@ -402,7 +402,7 @@ void ss_cmd_handle(void) int retv; u32 cmd = SS_CMD; - SSLOG(_INFO, "scmd_task: %04x\n", SS_CMD); + //SSLOG(_INFO, "scmd_task: %04x\n", SS_CMD); switch(cmd){ case SSCMD_PRINTF: