Thank you for your reply~
At present, I am trying to re-inject the new code into the main program of SEGA TETRIS by learning the sd.bin file
When the game is ready to try to read the file data, let it receive data directly from the SD card
After the game reads N files, the result is successful at first, but when the screen displays 3 logo pictures
When the game program is preparing to read the Nth file, there will be a problem
The reason for the problem is that when the file is ready to be read, the cmd read command 0x51 or 0x52 is sent to the sd card, but the return value of the command will become 0xff, which is very strange, because it is normal to read N files at the beginning, but An error occurs when preparing to read N+1 files. Is this because some registers are modified by the game program? ?
BTW, I have the same problem when running this game on DS
where is the latest SD card compatibility list?
I want to know if this game can run normally on sd?
edit:
I found the specific address. In the following function, the following registers will be initialized.
FFE80000
FFE80004
FFE80008
FFE80018
Код:
loc_8C087876: ! r4 = 0x1C200
add #-0x4, r15
mov.l .value500, r1! FFE80000
mov #0x0, r6
mov.l .value501, r2! FFE80018
mov r4, r0
mov.l .value502, r7! FFE80008
mov #0x6, r3
mov.l .value503, r5! FFE80004
mov.w r6, @r7
mov.w r3, @r2
mov.w r6, @r1
mov.l .value504, r1! 9600
cmp/eq r1, r0
bt loc_8C0878A8
mov.l .value505, r1! 1C200
cmp/eq r1, r0
bt loc_8C0878AE
mov.l .value506, r1! 38400
cmp/eq r1, r0
bt loc_8C0878B2
mov.l .value507, r1! 70800
cmp/eq r1, r0
bt loc_8C0878B8
bra loc_8C0878BE
nop
! ---------------------------------------------------------------------------
loc_8C0878A8:
mov #0x28, r3
bra loc_8C0878C0
mov.b r3, @r5
! ---------------------------------------------------------------------------
loc_8C0878AE:
bra loc_8C0878BA
mov #0xD, r0
! ---------------------------------------------------------------------------
loc_8C0878B2:
mov #0x6, r1
bra loc_8C0878C0
mov.b r1, @r5
! ---------------------------------------------------------------------------
loc_8C0878B8:
mov #0x2, r0
loc_8C0878BA:
bra loc_8C0878C0
mov.b r0, @r5
! ---------------------------------------------------------------------------
loc_8C0878BE:
mov.b r4, @r5
loc_8C0878C0:
mov.l .value508, r4! 186A0
bra loc_8C0878CC
mov.l r6, @r15 ! 00
! ---------------------------------------------------------------------------
loc_8C0878C6:
mov.l @r15, r2
add #0x1, r2
mov.l r2, @r15
loc_8C0878CC: !
mov.l @r15, r3
cmp/ge r4, r3
bf loc_8C0878C6
mov.l .value501, r1! FFE80018
mov #0x30, r3
mov #0x0, r0
mov.w r6, @r1
mov.w r3, @r7 ! FFE80008
rts
add #0x4, r15
I will upload the program and image file I made later
Of course, we can also modify the image file ourselves
Search for the hexadecimal value of the image file:
FC7F47D1 00E645D24360
You can use the sd card to play the game on the ds
0b000900 00E645D24360
The link below is the iso file I made, download the compressed package in the link, and then decompress it to the root directory of the SD card (a bin file and an iso file).
The image is not big, only 21M after decompression
You must use an SD card greater than or equal to 4G
But you can't start the iso directly in isoldr, because I have made a lot of changes to all the files of this game, and made some optimizations for the sd card mode, so I can only run the TEST.bin file in the file manager of dreamshell
Of course, you can also use the above method to modify your own image file, so that you can directly start your own image file in isoldr
https://mega.nz/file/UGpD3YrC#iXaO4qiGHB...kcV3_107ws
test video:
https://www.bilibili.com/video/BV1xD4y1V7aP/
Thanks swat for guiding me~~~~