Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
03232 Crash/Freeze Critical (emulation) Always Jun 2, 2009, 20:16 Dec 14, 2021, 21:46
Tester umbrio View Status Public Platform MAME (Self-compiled)
Assigned To Haze Resolution Fixed OS
Status [?] Resolved Driver
Version 0.131u3 Fixed in Version 0.239 Build
Fixed in Git Commit edc0dfb Github Pull Request #
Summary 03232: thoop: Black screen when you continue on 4 stage
Description when you are defeat on 4 stage ( lose all your lifes) and you push continue the game the screen put on black.
Steps To Reproduce 1-reaches the 4th stage
2-lose all your lives
3-Continue the game (push start before the count reaches to 0)
Additional Information any times in 4 stage when you lose one life also appear the black screen
Github Commit
Flags Verified with Original, Verified with Code
Regression Version
Affected Sets / Systems thoop
Attached Files
zip file icon thoop.zip (134,258 bytes) Jun 3, 2009, 09:08
Relationships
There are no relationship linked to this issue.
Notes
18
User avatar
No.04442
Kale
Developer
Jun 3, 2009, 00:24
edited on: Jun 3, 2009, 00:25
Could you please post an inp about this issue? This game ranks pretty high in my list of frustrating games and I don't want to learn to play it ;-)
User avatar
No.04444
umbrio
Tester
Jun 3, 2009, 09:10
in inp attached the black screen appear when i lose a life in 4th stage.
User avatar
No.04445
Tafoid
Administrator
Jun 3, 2009, 12:08
I'm able to confirm with attached .INP. Thank you for submitting it.
User avatar
No.04456
umbrio
Tester
Jun 5, 2009, 14:03
This bug is still in version 131u4, but although the game does not officially support the savestates I created one using an earlier version of mame that the game does work and when I use this savestate in 131u4 the game works perfectly (never reappears the black screen).
can i upload the savestate or he include info with copyright?
User avatar
No.14203
Kale
Developer
Oct 3, 2017, 16:05
On dying at stage 4 it jumps to
20002500: add.l D5, INVALID 31
Which is already invalid on a plain m68k, apparently something corrupts the stack.
Maybe a vram encryption issue?
User avatar
No.14204
Haze
Senior Tester
Oct 3, 2017, 18:37
edited on: Oct 3, 2017, 18:38
or just an original game bug, since it apparently requires you to reach stage 4 on 1 life, it might have slipped by testing.

so far nobody has been able to acomplish that on a PCB to tell me if it happens there

also there could be undumped revisions, if this recent Gaelco work has shown anything it's that there are a lot more revisions of the games out there than we had.
User avatar
No.14205
Fortuna
Tester
Oct 3, 2017, 20:22
Bug aren't not a bug?
Or probably little problems with the protection?
User avatar
No.16038
MetalGod
Senior Tester
Jan 16, 2019, 12:42
edited on: Jan 18, 2019, 19:52
Tested on mame 0.205
The bug still exists and it doesn't require any condition once stage 4 is reached.
I've had a black screen after losing one life right at the beginning of the fourth level. No need to continue before or after that, so the "steps to reproduce the problem" here are wrong.
No matter how many lives I lost on previous levels or how many times I continued. I made it to the fourth stage, lost one life and got black screen.
I doubt this is pcb behaviour. Here's my full gameplay untill the error.

Could it be related to 06027 ?
User avatar
No.16408
Glacius
Tester
May 2, 2019, 22:04
quote: so far nobody has been able to acomplish that on a PCB to tell me if it happens there

I have recently played this game on an original cabinet/board, and I reached level 4 with no lost lives. Then at this level I began to lose lives and got a game over, but I never got a black screen.

The bug seems not present in the original.
User avatar
No.17291
Dumple
Tester
Dec 23, 2019, 02:27
I observed this bug in 0.216. Zones 1-3 work normally, but death in zone 4 or in zone 5 led to a black screen. (That was true whether losing last life or first life).
User avatar
No.17316
arcade addict
Tester
Jan 3, 2020, 14:09
edited on: Jan 3, 2020, 14:09
I thought it worth a mention that if you use the stage select cheat and start the game on level 4 or 5 rather than playing through
all the previous levels first you dont get the black screen issue when you lose a life or continue.
User avatar
No.19414
Haze
Senior Tester
Nov 3, 2021, 01:25
edited on: Nov 3, 2021, 01:35
I've been looking into this a bit more.

If you kill yourself on the spike at the end of the stage 3 boss, as it is also dying, the game doesn't appear to crash when you die on stage 4.

this almost suggests some issue with the transition sequence between the stages which does not play if you die on stage 3
User avatar
No.19505
Haze
Senior Tester
Nov 28, 2021, 16:03
edited on: Nov 28, 2021, 16:03
wp FFD2E1,1,w (can monitor for level changing to 3)
fill ffe08e,1,00 (to clear ffe08e to 00)

the value in ffe08e gets set to 27, if it's 27 and you die, the game crashes.

you can set it to 27 at any point during the game, and if you die, the game will crash.

any other value seems fine

needs more digging.

this could easily be some extra 'protection failure' flag.
User avatar
No.19506
Haze
Senior Tester
Nov 28, 2021, 16:14
set by code at c368
User avatar
No.19507
Haze
Senior Tester
Nov 28, 2021, 16:24
edited on: Nov 28, 2021, 16:24
16d00 contains an explicit check against the value being 0x27, this code, unsurprisingly, triggers when you die.
User avatar
No.19510
Haze
Senior Tester
Nov 28, 2021, 23:33
also this happens way back in 0.104 which is the first major release this was marked as 'working' so I'm not sure where the claim otherwise is coming from, unless a cheat was used in the making of that state?
User avatar
No.19512
Haze
Senior Tester
Nov 29, 2021, 11:33
I think it is still some kind of protection, kinda wondering if it's going to come down to timing of the vram encryption, or some edge case behavior. The code doing these checks, and setting the flag in RAM appears to be intentionally obfusicated

00C334: move.l A4, -(A7)
00C336: cmpi.b #$3, $ffd2e1.l
00C33E: bne $c36c
00C340: lea $ffde79.l, A4
00C346: adda.l #$214, A4
00C34C: tst.b (A4) (ffe08d)
00C34E: bne $c36c
00C350: cmpi.b #$5, $ffdc45.l
00C358: bne $c36c
00C35A: addq.b #1, (A4)
00C35C: lea $ffc92b.l, A4
00C362: adda.l #$1763, A4
00C368: move.b #$27, (A4) (ffe08e)
00C36C: movea.l (A7)+, A4

note, the
00C340: lea $ffde79.l, A4
00C346: adda.l #$214, A4
to get ffe08d

and
00C35C: lea $ffc92b.l, A4
00C362: adda.l #$1763, A4
to get ffe08e

there's no real reason to do that unless you want to hide those addresses from somebody studying the disassembly.
User avatar
No.19513
Robbbert
Senior Tester
Dec 1, 2021, 13:53
See discussions about possible remedies..

https://github.com/mamedev/mame/pull/8903
https://github.com/mamedev/mame/pull/8916