News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - DarkAkuma

Pages: [1]
1
And if I'm not mistaken, C7 could mean anything I believe. I think Robin64 mentioned this way earlier in the thread, but I believe C7 just simply means that Canoe can't run it, which could mean lots and lots of different things. I believe there's just a lot of overlap between C7 and Preset IDs due to the game asking for something, but since whatever feature is turned off, Canoe goes all HAL 9000 and says, "I'm sorry Dave, I'm afraid I can't do that." and returns a C7. I believe so anyways.

C7 basically means that canoe tried to execute some of the games code and it returned an unexpected result/error. I know, a pretty generic answer. But I just felt I should chime in as "can't run it" is kind of wrong. I've done a LOT of testing, and boot time results come as mostly 4 things, full proper boot, C7, Black Screen (No Border), Black Screen (with Border). The 2 black screen results are more of the "can't run it" variety. C7's can happen in the middle of a game. For example, when developing the Star Ocean patch, id see certain pointers get set wrong and point outside of the scope of the memory addresses. When that pointer gets executed the game C7's.

And while I'm at it, I might as well mention that yea. DSP1 is an exception to the special chips needing a specific preset id. To understand why, you have to look at the development cycle of the original VC ROM releases. DSP1 was supported from the start. Meaning the earlier branch of canoes ancestors code was designed to emulate DSP1 from the ground up. SA1, SDD1 and Super FX all were added later. And each are supported differently. SA-1 requires a PID to execute code, SDD1 requires a PID to bypass SDD1 calls and instead requires the ROM to be hacked in a certain way, and Super FX seems to just require a previously unused header byte to be set to a non-zero value (generally 0x0C). In the broadest terms, a PID is just a tag to allow a game to be executed with whatever unique specific functions/hacks/combination of features the devs felt were needed to achieve optimal execution. It's canoe equivalent of ZSNES/SNES9X old game specific hacks.

2
Yes, details beginning to make sense. Was confused about KDL3 -- told it works, doesn't, magic preset ids. Basic: game doesn't reliably work and needs patch. Thing about randomly "erasing" the save .. there's sa-1 write enable / protection setting. Maybe Canoe gets finicky about this value, but never checked this game (sa-1 core is very new to me).

So shutting down emu inside "save screen" area would be safe. But questionable during playfield. Or so I dream.

To be fair, some of the confusion is likely due to hakchi2 setting the wrong Preset ID. It sets it to SMRPGs ID, which works and saves, but causes canoe to not render water transparency correctly. So there are people out there that will say KDL3 SRAM saving works correctly based off that. Also, I only recently changed the default ID from 0x10A2 to 0x10A4 in a recent update of SFROM Tool, which should further add to confusion.

3
I can load my SRAM just fine right now and it was created by using save states too. That's the thing. It's too unreliable to tell. And it happens easily for some, and rarely for others.

KDL3 is not a game I play. I've just gone off reports. Several said 0x10A4 worked better, but only one tried to describe in what way it was better. So maybe that one guy is wrong on his specifics.

4
Kirby's Dream Land 3 sram is working. DarkAkuma's tool gives 10A4 (E-PAL Preset ID). 10A2 (E-NTSC Preset ID). Docs as of 2018-02-21 mention it doesn't work. So update please. ;)

I'll clarify here for whoever.

I purposely use 0x10A4 for the E-NTSC version instead of 0x10A2 because, in truth, both ID's are for the E-NTSC version of the ROM. Nintendo often reserved an ID for a E-PAL version, but ended up releasing the E-NTSC version in PAL regions with that ID. And that's the case with KDL3.

So both are valid and official for the E-NTSC ROM, but I chose 0x10A4 because I've read reports that with it SRAM saving works better, though not 100% perfect. The difference being that a SRAM that's created with a Save State won't load, but normal SRAM saves will now work fine.

5
ActRaiser 2 is another slowrom variant.
Code: [Select]
e3e0
0A42 00 0D42 01
0A42 00 0D42 00

80e2eb lda $80e302,x [80e3e0] A:4200 X:00de Y:4209 S:01fb D:0000 DB:81 nvmxdIzC V: 15 H: 166 F: 0
80e2ef bmi $e300     [80e300] A:420a X:00de Y:4209 S:01fb D:0000 DB:81 nvmxdIzC V: 15 H: 166 F: 0
80e2f1 tay                    A:420a X:00de Y:4209 S:01fb D:0000 DB:81 nvmxdIzC V: 15 H: 182 F: 0
80e2f2 sep #$20               A:420a X:00de Y:420a S:01fb D:0000 DB:81 nvmxdIzC V: 15 H: 196 F: 0

80e2f4 lda $80e304,x [80e3e2] A:420a X:00de Y:420a S:01fb D:0000 DB:81 nvMxdIzC V: 15 H: 258 F: 0
80e2f8 sta $0000,y   [81420a] A:4200 X:00de Y:420a S:01fb D:0000 DB:81 nvMxdIZC V: 15 H: 258 F: 0
80e2fb inx                    A:4200 X:00de Y:420a S:01fb D:0000 DB:81 nvMxdIZC V: 15 H: 294 F: 0
80e2fc inx                    A:4200 X:00df Y:420a S:01fb D:0000 DB:81 nvMxdIzC V: 15 H: 308 F: 0
80e2fd inx                    A:4200 X:00e0 Y:420a S:01fb D:0000 DB:81 nvMxdIzC V: 15 H: 322 F: 0
80e2fe bra $e2e9     [80e2e9] A:4200 X:00e1 Y:420a S:01fb D:0000 DB:81 nvMxdIzC V: 15 H: 336 F: 0

Writes 420a = 00 (irq timer), 420d = 00 (slowrom). Still want to find specific "copier protection" algorithm.

Thanks. Nice to finally know. I suspected it might be that, but I don't know a thing about ASM. Just basic/intermediate ROM hacking.

MMX2 slowdown ...... going to whip up quick FastRom patch later and see what it does. ^^

MMX2 slowdown is just hardware limitations. Same as Marvelous. The SNESC hardware gets pushed to its limits when emulating certain special chips, and other demanding things like high res mode or pushing sprite limits at the same time as also using its low latency input mode.

6
Patch disables FastRom access; forces SlowRom.

Yea. It's the SlowROM Check Fix from ucon64, turned into a patch. I added that SlowROM detection/fix to my sfrom Tool too, but the patches are still out there as generic "canoe fix"es.

This does remind me though. One day a fix for ActRaiser2 on canoe randomly surfaced on one of the lists, with zero explanation of what it is/does to make it work.

Quote
Find the Hexadecimal value 0A42000D4201, replace 01 with 00 which will give you 0A42000D4200 and the game will work!

Any idea? Would love to finally know WTF it is. =)

It was adapted to a few other games, but only those with exact hex matches to described bytes.

7
HiRes = no. There should be nothing that can be done with a patch that will enable high res mode. If a game can use it, its already coded to request for the the emulator to use it. Canoe ignores that request unless you use specific Preset IDs. And only 0x1016 is a ID that enable it, but also boots most games. I tested EVERY ID with Rudra no Hihou, and no other high res mode enabling ID will boot it.
Hi-Res = .. really need an explanation on presets and real-time patching? This is confusing enough right now.

Preset IDs just enable/force different features. Generally stuff like use of special chips, what layers are enabled, high res mode, etc. I guess its Nintendo ways of cutting performance costs. Only enable access to the features that are needed.

8
Found problem with Super Butouden 2. It's very precise timing glitch with H-DMA (BG4HOFS) and BG4VOFS scroll register. Thinking of safe way to satisfy both conditions.



Dragon Ball Z - Super Butouden (Rev 1) Canoe tester
http://s000.tinyupload.com/index.php?file_id=07057133862394665743

Tries to fit timing between slow (geiger, canoe) and normal (bsnes, hardware). If works, will make Rev 0 also and finish writeup.

That seems to work! I tried 2 different levels, and backed away to force it to go split screen, and didn't see any flicker! =)

9
I tried relaying a game for you to look into, but I'm not sure if you got it.

I went as far as I could go trying to get Dragon Ball Z - Super Butoden 2 to work. It was thought to be one that should be compatible with canoe, just requiring a correct intended preset id and/or a undumped VC ROM. I exhausted all the preset ids that it could be, and the only VC ROM contained no custom patching other then music. So I'm convinced theres going to be no other fix for it than a custom hack. Sadly, such hacks are beyond my skills.

I compiled an approximation of the issue into a gif. The issue is where the health bars glitch into the middle of the screen for a frame on player 1s side, and other tiles onto player 2s side. It alternates back and forth every second of so.


Pages: [1]