- --
Viewing Issue Advanced Details
ID | Category [?] | Severity [?] | Reproducibility | Date Submitted | Last Update |
---|---|---|---|---|---|
01104 | Gameplay | Major | Have not tried | Feb 11, 2008, 14:59 | Jan 9, 2010, 11:51 |
Tester | Kale | View Status | Public | Platform | |
Assigned To | stephh | Resolution | Bugs That Aren't Bugs | OS | |
Status [?] | Resolved | Driver | |||
Version | 0.61 | Fixed in Version | Build | ||
Fixed in Git Commit | Github Pull Request # | ||||
Summary | 01104: wboyu: The final boss can't be killed, even with 150 or more "strokes". | ||||
Description | In this clone set, the final boss can't be killed, even with 150 or more "strokes". | ||||
Steps To Reproduce | |||||
Additional Information | |||||
Github Commit | |||||
Flags | Verified with Code | ||||
Regression Version | |||||
Affected Sets / Systems | wboyu | ||||
Attached Files
|
wboyu_notbug.txt (4,783 bytes) Jan 9, 2010, 11:49 [Show Content] [Hide Content]It seems impossible to kill the last boss in this specific set ... This is in fact NOT a bug because of an extra test that prevents boss energy to be decremented ... First, let's list the useful adresses to know : - 0xc301 : level (range 0x00-0x1f) - 0xc300 : area (range 0x00-0x07) = level / 4 (always rounded down) - 0xc319 : boss energy (when you reach it - this adresses has another unknown purposes elsewhere) Then, let's have a look at a "valid" set (eg: 'wboy) : 2FED: 3A 04 93 ld a,($C300) 2FF0: 4F ld c,a 2FF1: 87 add a,a 2FF2: 81 add a,c 2FF3: C6 58 add a,$08 2FF5: DD 77 5D ld (ix+$19),a This initializes boss energy with a simple formula : energy = area * 3 + 8 ... And here is the main routine : Part 1: 3006: 11 0B 42 ld de,$120E 3009: CD E9 64 call $20B9 routine that tests if boss is hit 300C: 30 57 jr nc,$3021 if boss isn't hit, jump to Part 2 300E: DD 35 59 dec (ix+$19) energy = energy - 1 3011: 28 71 jr z,$3044 if energy = 0, jump to Part 3 (boss is dead) 3013: DD 36 1F 1D ld (ix+$1a),$08 Initialize the values to make the head "flash" 3017: 0E 16 ld c,$46 3019: CD 7A 69 call $2D2A 301C: 3E 47 ld a,$03 301E: CD 1C 0F call $0E58 Part 2: 3021: 11 0F 17 ld de,$120E 3024: CD 6F 35 call $206A 3027: 30 55 jr nc,$302E 3029: 21 0E 8C ld hl,$C85E 302C: CB D6 set 2,(hl) 302E: CD B5 75 call $30F1 3031: DD 7E 1F ld a,(ix+$1a) 3034: B7 or a 3035: 28 1F jr z,$3041 3037: DD 35 5E dec (ix+$1a) 303A: 20 41 jr nz,$3041 303C: 0E 69 ld c,$2D 303E: CD 6E 29 call $2D2A 3041: C3 F5 60 jp $30F1 Part 3: 3044: 0E 7D ld c,$2D Now look at what we have in 'wboyu' ... Even if the adresses are different, the initialization routine is the same : 2DA0: 3A 00 C3 ld a,($C300) 2DA3: 4F ld c,a 2DA4: 87 add a,a 2DA5: 81 add a,c 2DA6: C6 08 add a,$08 2DA8: DD 77 19 ld (ix+$19),a But the main routine is slightly different : Part 1: 2DB9: 11 0E 12 ld de,$120E 2DBC: CD 05 1F call $1F05 routine that tests if boss is hit 2DBF: 30 1A jr nc,$2DDB if boss isn't hit, jump to Part 2 2DC1: 3A 00 C3 ld a,($C300) 2DC4: FE 06 cp $06 have we reached area 7 ? 2DC6: 30 05 jr nc,$2DCD if this is the case, jump to Part 1b 2DC8: DD 35 19 dec (ix+$19) energy = energy - 1 2DCB: 28 31 jr z,$2DFE if energy = 0, jump to Part 3 (boss is dead) Part 1b: 2DCD: DD 36 1A 08 ld (ix+$1a),$08 Initialize the values to make the head "flash" 2DD1: 0E 46 ld c,$46 2DD3: CD 24 2B call $2B24 2DD6: 3E 03 ld a,$03 2DD8: CD 4A 0D call $0D4A Part 2: 2DDB: 11 0E 12 ld de,$120E 2DDE: CD B6 1E call $1EB6 2DE1: 30 05 jr nc,$2DE8 2DE3: 21 5E C8 ld hl,$C85E 2DE6: CB D6 set 2,(hl) 2DE8: CD 8C 2E call $2E8C 2DEB: DD 7E 1A ld a,(ix+$1a) 2DEE: B7 or a 2DEF: 28 0A jr z,$2DFB 2DF1: DD 35 1A dec (ix+$1a) 2DF4: 20 05 jr nz,$2DFB 2DF6: 0E 2D ld c,$2D 2DF8: CD 24 2B call $2B24 2DFB: C3 8C 2E jp $2E8C Part 3: 2DFE: 0E 2D ld c,$2D As you can see, boss energy is NEVER decremented when you reach area 7 or 8, so the level can NEVER end ! On a side note, there is an interesting routine in all "valid" sets which is called before initializing boss energy : Part 1: 2C8F: 3A 50 87 ld a,($C300) 2C92: D6 42 sub $06 2C94: 38 5E jr c,$2CB0 2C96: 3D dec a 2C97: 28 03 jr z,$2CA0 2C99: 3A 10 93 ld a,($C314) 2C9C: FE 4C cp $1C 2C9E: 30 40 jr nc,$2CB0 Part 2: 2CA0: 3E 45 ld a,$01 2CA2: 32 57 93 ld ($C313),a 2CA5: 3E F8 ld a,$A8 2CA7: 32 9C 99 ld ($C998),a 2CAA: 21 30 3B ld hl,$3F60 2CAD: 22 94 99 ld ($C990),hl Part 3: 2CB0: 21 3D 94 ld hl,$C479 2CB3: 34 inc (hl) 2CB4: C9 ret This routine tests the area and the number of dolls you collected : if you don't have (at least) 28 dolls after completing area 7 round 4 (which means you haven't taken ALL of them since the begining), the game will end and you won't be able to play the 4 rounds from area 8 ! This routine doesn't even exist in 'wboyu' because, as we saw above, you can never kill 7th boss ! | ||||
Relationships
There are no relationship linked to this issue. |
Notes
3
No.04376
Kale Developer
May 14, 2009, 17:41
|
http://www.mameitalia.net/index.php?s=&showtopic=12508&view=findpost&p=149552 Very likely this is a BTANB... |
---|---|
No.04381
Haze Senior Tester
May 14, 2009, 21:53
|
I wouldn't be surprised if you find a cheat to kill him that there's no ending ;-) 99% sure it's just an unfinished proto. |
No.05466
stephh Developer
Jan 9, 2010, 11:50
|
This is indeed a BTNAB which can be easily spot after a quick look of the Z80 code of the game (see attached file) ... |