If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Notes:Bomb Jack (Arcade)

From The Cutting Room Floor
Jump to navigation Jump to search

This page contains notes for the game Bomb Jack (Arcade).

Bonus Life code:

#BONUS LIVES (SCORE) SUBROUTINE
5A07: C9            ret			;This routine has been dummied out. Change to push af (E5).
5A08: C5            push bc		;Push BC.
5A09: D5            push de		;Push DE.
!CHECK BONUS LIFE TEMP VAR
5A0A: 3A AE 81      ld   a,($81AE)	;Set A to Bonus Life Temp Var.
5A0D: FE FF         cp   $FF		;Check if Temp Var is set to FF.
5A0F: CA E3 5A      jp   z,$5AE3	;If true, jump out. No more bonus lives this game.
!CHECK DIP SWITCH SETTINGS
5A12: 3A 14 80      ld   a,($8014)	;Set A to Dip Switch 2 settings.
5A15: E6 07         and  $07		;AND with 07 - Get the Extra Life settings.
5A17: FE 00         cp   $00		;Check if it's set to "None"
5A19: 20 03         jr   nz,$5A1E	;If not, jump.
5A1B: C3 E3 5A      jp   $5AE3		 ;Jump out of subroutine - no extra lives.
5A1E: FE 01         cp   $01		;Is the Bonus Life setting "Every 100k?"
5A20: 20 05         jr   nz,$5A27	;If it's not, jump to next check.
5A22: 06 0A         ld   b,$0A		 ;Set Bonus Life Value No.1 to 0A (100k).
5A24: C3 59 5A      jp   $5A59		 ;Jump to "Bonus Life - Variable" point.
5A27: FE 02         cp   $02		;Is the bonus life setting "Every 30k?"
5A29: 20 05         jr   nz,$5A30	;If it's not, jump to next check.
5A2B: 06 03         ld   b,$03		 ;Set Bonus Life Value No.1 to 03 (30k).
5A2D: C3 59 5A      jp   $5A59		 ;Jump to "Bonus Life - Variable" point.
5A30: FE 03         cp   $03		;Is the bonus life setting "50k only?"
5A32: 20 05         jr   nz,$5A39	;If it's not, jump to next check.
5A34: 06 05         ld   b,$05		 ;Set Bonus Life Value No.1 to 05 (50k).
5A36: C3 69 5A      jp   $5A69		 ;Jump to "Bonus Life - One Only" point.
5A39: FE 04         cp   $04		;Is the bonus life setting "100k only?"
5A3B: 20 05         jr   nz,$5A42	;If it's not, jump to next check.
5A3D: 06 0A         ld   b,$0A		 ;Set Bonus Life Value No.1 to 0A (100k).
5A3F: C3 69 5A      jp   $5A69		 ;Jump to "Bonus Life - One Only" point.
5A42: FE 05         cp   $05		;Is the bonus life setting "50k and 100k?"
5A44: 20 07         jr   nz,$5A4D	;If it's not, jump to next check.
5A46: 06 05         ld   b,$05		 ;Set Bonus Life Value No.1 to 05 (50k).
5A48: 0E 0A         ld   c,$0A		 ;Set Bonus Life Value No.2 to 0A (100k).
5A4A: C3 7A 5A      jp   $5A7A		 ;Jump to "Bonus Life - Two Only" point.
5A4D: FE 06         cp   $06		;Is the bonus life setting "100k and 300k?"
5A4F: C2 9F 5A      jp   nz,$5A9F	;If it's not, jump to "Bonus Life - 50k, 100k, 300k" point.
5A52: 06 0A         ld   b,$0A		 ;Set Bonus Life Value No.1 to 0A (100k).
5A54: 0E 1E         ld   c,$1E		 ;Set Bonus Life Value No.2 to 1E (300k).
5A56: C3 7A 5A      jp   $5A7A		 ;Jump to "Bonus Life - Two Only" point.
!BONUS LIFE - VARIABLE
5A59: 16 00         ld   d,$00		;Set D to 00.
5A5B: 3A AD 81      ld   a,($81AD)	 ;Set A to Bonus Life Counter.
5A5E: B8            cp   b		 ;Check is player has reached the requisite number of points.
5A5F: DA D4 5A      jp   c,$5AD4	 ;If so, jump to "Bonus Life Incrementing" point.
5A62: 14            inc  d		 ;Increment D.
5A63: 90            sub  b		 ;Subtract 1 from B.
5A64: 32 AD 81      ld   ($81AD),a	 ;Set Bonus Life Counter to A.
5A67: 18 F2         jr   $5A5B		 ;Jump back and check again.
!BONUS LIFE - ONE ONLY
5A69: 3A AD 81      ld   a,($81AD)	;Set A to Bonus Life Counter.
5A6C: B8            cp   b		;Check if player has reached the Bonus Life value.
5A6D: DA E3 5A      jp   c,$5AE3	;If not, branch out.
5A70: 16 01         ld   d,$01		 ;Set D to 01.
5A72: 3E FF         ld   a,$FF		 ;Set A to FF.
5A74: 32 AE 81      ld   ($81AE),a	 ;Set Bonus Life Temp Var to FF.
5A77: C3 D4 5A      jp   $5AD4		 ;Jump to "Bonus Life Incrementing" point.
!BONUS LIFE - TWO ONLY
5A7A: 16 00         ld   d,$00		;Set D to 00.
5A7C: 3A AE 81      ld   a,($81AE)	;Set A to Bonus Life Temp Var.
5A7F: FE 01         cp   $01		;Check if the player has recieved an extra life for the first Bonus Life value.
5A81: 28 0D         jr   z,$5A90	;If true, don't bother checking it again.
5A83: 3A AD 81      ld   a,($81AD)	 ;Set A to Bonus Life Counter.
5A86: B8            cp   b		 ;Check if player has reached the first Bonus Life value.
5A87: DA E3 5A      jp   c,$5AE3	 ;If not, branch out.
5A8A: 14            inc  d		  ;Increment D.
5A8B: 3E 01         ld   a,$01		  ;Set A to 01.
5A8D: 32 AE 81      ld   ($81AE),a	  ;Set Bonus Life Temp Var to 01.
5A90: 3A AD 81      ld   a,($81AD)	;Set A to Bonus Life Counter.
5A93: B9            cp   c		;Check if player has reached the second Bonus Life value.
5A94: 38 3E         jr   c,$5AD4	;If not, jump to "Bonus Life Incrementing" point.
5A96: 14            inc  d		 ;Increment D.
5A97: 3E FF         ld   a,$FF		 ;Set A to FF.
5A99: 32 AE 81      ld   ($81AE),a	;Set Bonus Life Temp Var to FF.
5A9C: C3 D4 5A      jp   $5AD4		;Jump to Bonus Life
!BONUS LIFE - 50k, 100k, 300k
5A9F: 16 00         ld   d,$00		;Set D to 00.
5AA1: 3A AE 81      ld   a,($81AE)	;Set A to Bonus Live Temp Var.
5AA4: FE 01         cp   $01		;Check if the player has recieved an extra life for the first Bonus Life value.
5AA6: 28 12         jr   z,$5ABA	;If true, don't check it again.
5AA8: FE 02         cp   $02		 ;Check if the player has recieved an extra life for the second Bonus Life value.
5AAA: 28 1B         jr   z,$5AC7	 ;If true, don't check it again.
5AAC: 3A AD 81      ld   a,($81AD)	  ;Set A to Bonus Life Counter.
5AAF: FE 05         cp   $05		  ;Check if player has reached 50k points.
5AB1: DA E3 5A      jp   c,$5AE3	  ;If not, branch out.
5AB4: 14            inc  d		   ;Increment D.
5AB5: 3E 01         ld   a,$01		   ;Set A to 01.
5AB7: 32 AE 81      ld   ($81AE),a	   ;Set Bonus Life Temp Var to 01.
5ABA: 3A AD 81      ld   a,($81AD)	  ;Set A to Bonus Life Counter.
5ABD: FE 0A         cp   $0A		  ;Check if player has reached 100k points.
5ABF: 38 13         jr   c,$5AD4	  ;If not, jump to "Bonus Life Incrementing" point.
5AC1: 14            inc  d		   ;Increment D.
5AC2: 3E 02         ld   a,$02		   ;Set A to 02.
5AC4: 32 AE 81      ld   ($81AE),a	   ;Set Bonus Life Temp Var to 02.
5AC7: 3A AD 81      ld   a,($81AD)	  ;Set A to Bonus Life Counter.
5ACA: FE 1E         cp   $1E		  ;Check if player has reached 300k points.
5ACC: 38 06         jr   c,$5AD4	  ;If not, jump to "Bonus Life Incrementing" point.
5ACE: 14            inc  d		   ;Increment D.
5ACF: 3E FF         ld   a,$FF		   ;Set A to FF.
5AD1: 32 AE 81      ld   ($81AE),a	   ;Set Bonus Life Temp Var to FF.
!BONUS LIFE INCREMENTING
5AD4: 7A            ld   a,d		;Set A to D.
5AD5: FE 00         cp   $00		;Check if player has recieved any bonus lives.
5AD7: 28 0A         jr   z,$5AE3	;If not, branch out.
5AD9: 3A 9B 81      ld   a,($819B)	 ;Set number of lives to A.
5ADC: 82            add  a,d		 ;Add D to A.
5ADD: 32 9B 81      ld   ($819B),a	 ;Give the player the appropriate number of bonus lives.
5AE0: CD F3 4F      call $4FF3		 ;Call (HUD update?) subroutine.
5AE3: D1            pop  de		;Pop DE.
5AE4: C1            pop  bc		;Pop BC.
5AE5: F1            pop  af		;Pop AF.
5AE6: C9            ret			;End of subroutine.

Schematics

The schematics for the game are pre-final, as it specifies a 12.096MHz crystal for the video and audio clock (finalized boards use 12MHz), and it specifies double the ROM space for the audio CPU and the background graphics, implying that more licensed music and locations were planned for the game but cut out likely due to limitations and rights issues. The audio CPU in the final game only ever uses half of the RAM that it is allocated.


(Source: Mirko Buffoni (MAME Bomb Jack driver))

Sprite Format

The game sets bits 4 and 5 in the sprite table for each object that is either respectively a bonus or a large object. This is never used in the final hardware design nor the schematics and may be a leftover from the game possibly being prototyped on Senjyo hardware, which is very similar in how it handles graphics. In Senjyo, these bits are used to indicate layer priority for which each sprite is drawn.


(Source: Mirko Buffoni (MAME Bomb Jack driver))