Displaying credits: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
m (Removed BCD conversion)
m (Replaced D1 by D0 in the unit part of the code as D1 was displayed 2 times instead of D1 then D0)
 
(2 intermediate revisions by the same user not shown)
Line 18: Line 18:
move.w  d1,REG_VRAMRW          ; Write tens to VRAM
move.w  d1,REG_VRAMRW          ; Write tens to VRAM
andi.w  #$000F,d0              ; Get units
andi.w  #$000F,d0              ; Get units
ori.w  #$5030,d1             ; Same
ori.w  #$5030,d0             ; Same
move.w  d1,REG_VRAMRW          ; Write units to VRAM
move.w  d0,REG_VRAMRW          ; Write units to VRAM
</syntaxhighlight>
</syntaxhighlight>


[[Category:Code]]
[[Category:Code]]

Latest revision as of 10:00, 8 October 2018

The system ROM takes care of displaying the credits on the LED displays itself (see MV-LED board).

It's up to the game to display the counts on the screen when needed. SNK recommends using a 8x8 fix layer font.

The credit count for each player is stored in BCD in $D00034 for player 1, and $D00035 for player 2. These locations are in the backup RAM, to keep the credit counts in case of a power failure during play.

Note: SYSTEM_IO must be called each v-blank to update those locations.

moveq.l #0,d0
move.b  $D00034,d0             ; Read P1 credits (hex)
move.w  #$7088,REG_VRAMADDR    ; Set position in fix map, top left
move.w  d0,d1                  ; Make a copy of the BCD value
move.w  #$20,REG_VRAMMOD       ; Auto-inc fix column
lsr.b   #4,d1                  ; Get tens
andi.w  #$000F,d1              ; Mask off eventual garbage
ori.w   #$5030,d1              ; Set palette 5 and tile offset $30 (ASCII "0")
move.w  d1,REG_VRAMRW          ; Write tens to VRAM
andi.w  #$000F,d0              ; Get units
ori.w   #$5030,d0              ; Same
move.w  d0,REG_VRAMRW          ; Write units to VRAM