4841 lines
311 KiB
Plaintext
4841 lines
311 KiB
Plaintext
_startAddress_ EQU 0x0200
|
|
|
|
; Internal Variables
|
|
serialRawPrev EQU 0x0081
|
|
register0 EQU 0x0082
|
|
register1 EQU register0 + 0x02
|
|
register2 EQU register0 + 0x04
|
|
register3 EQU register0 + 0x06
|
|
register4 EQU register0 + 0x08
|
|
register5 EQU register0 + 0x0A
|
|
register6 EQU register0 + 0x0C
|
|
register7 EQU register0 + 0x0E
|
|
register8 EQU register0 + 0x10
|
|
register9 EQU register0 + 0x12
|
|
register10 EQU register0 + 0x14
|
|
register11 EQU register0 + 0x16
|
|
register12 EQU register0 + 0x18
|
|
register13 EQU register0 + 0x1A
|
|
register14 EQU register0 + 0x1C
|
|
register15 EQU register0 + 0x1E
|
|
fgbgColour EQU register0 + 0x20
|
|
cursorXY EQU register0 + 0x22
|
|
midiStream EQU register0 + 0x24
|
|
midiDelay EQU register0 + 0x26
|
|
miscFlags EQU register0 + 0x28
|
|
timerTick EQU register0 + 0x2A
|
|
timerPrev EQU register0 + 0x2C
|
|
|
|
; Internal Constants
|
|
ENABLE_SCROLL_BIT EQU 0x0001
|
|
ON_BOTTOM_ROW_BIT EQU 0x0002
|
|
ENABLE_SCROLL_MSK EQU 0xfffe
|
|
ON_BOTTOM_ROW_MSK EQU 0xfffd
|
|
|
|
; Internal Buffers
|
|
regsWorkArea EQU 0x0000
|
|
textWorkArea EQU 0x7fa0
|
|
|
|
; Includes
|
|
%includePath "../../at67/gbas/runtime"
|
|
%include util.i
|
|
%include gigatron.i
|
|
%include macros.i
|
|
|
|
; Labels
|
|
_entryPoint_ EQU 0x0200
|
|
_loop EQU 0x02ce
|
|
_handleInput EQU 0x02eb
|
|
_gameOverInput EQU 0x04d4
|
|
_displayGameOver EQU 0x050d
|
|
_playSndCardFlip EQU 0x0539
|
|
_playSndHold EQU 0x057f
|
|
_playSndUnHold EQU 0x05c5
|
|
_playSndBet EQU 0x0616
|
|
_playSndWin EQU 0x063b
|
|
_getRomNote EQU 0x06b2
|
|
_initCards EQU 0x06c8
|
|
_clearHand EQU 0x08e0
|
|
_dealCards EQU 0x09f6
|
|
_retry1 EQU 0x0aa6
|
|
_cheatDeal EQU 0x0af5
|
|
_drawCards EQU 0x0caa
|
|
_retry2 EQU 0x0cc7
|
|
_selectCard EQU 0x0dc7
|
|
_holdCard EQU 0x10f5
|
|
_displayPayouts EQU 0x13ea
|
|
_displayBalance EQU 0x19a9
|
|
_updateBalance EQU 0x1cce
|
|
_displayBet EQU 0x1eae
|
|
_displayCardBacks EQU 0x1ef0
|
|
_displayCards EQU 0x21cc
|
|
_sortCards EQU 0x3dbb
|
|
_checkHand EQU 0x3ee6
|
|
_jacksOrBetter EQU 0x43d4
|
|
_twoPair EQU 0x44d6
|
|
_threeOfAKind EQU 0x45e1
|
|
_straight EQU 0x47a4
|
|
_flush EQU 0x48da
|
|
_fullHouse EQU 0x4ac2
|
|
_fourOfAKind EQU 0x4bc0
|
|
_straightFlush EQU 0x4cbe
|
|
_royalFlush EQU 0x4cdd
|
|
_else_0x02e6 EQU 0x02e4
|
|
_endif_0x02eb EQU 0x02e9
|
|
_page_0x0300 EQU 0x0300
|
|
_endif_0x0330 EQU 0x032e
|
|
_endif_0x033e EQU 0x033c
|
|
_endif_0x037b EQU 0x036b
|
|
_endif_0x0389 EQU 0x0379
|
|
_endif_0x03c5 EQU 0x03a7
|
|
_endif_0x03d8 EQU 0x03ba
|
|
_endif_0x0414 EQU 0x03e8
|
|
_page_0x0400 EQU 0x0400
|
|
_endif_0x0427 EQU 0x040b
|
|
_else_0x0473 EQU 0x044f
|
|
_endif_0x049e EQU 0x0476
|
|
_endif_0x04ba EQU 0x048a
|
|
_endif_0x04d3 EQU 0x04a3
|
|
_endif_0x04dc EQU 0x04ac
|
|
_endif_0x050a EQU 0x04d2
|
|
_page_0x0500 EQU 0x0500
|
|
_endif_0x053a EQU 0x050b
|
|
_page_0x0600 EQU 0x0600
|
|
_next_0x0701 EQU 0x06d1
|
|
_page_0x08a0 EQU 0x08a0
|
|
_endif_0x077e EQU 0x08d0
|
|
_next_0x0793 EQU 0x08e5
|
|
_page_0x09a0 EQU 0x09a0
|
|
_page_0x0aa0 EQU 0x0aa0
|
|
_else_0x0853 EQU 0x0adc
|
|
_endif_0x0858 EQU 0x0ae1
|
|
_page_0x0ba0 EQU 0x0ba0
|
|
_page_0x0ca0 EQU 0x0ca0
|
|
_next_0x08f9 EQU 0x0caf
|
|
_page_0x0da0 EQU 0x0da0
|
|
_else_0x098a EQU 0x0db2
|
|
_endif_0x098f EQU 0x0db7
|
|
_page_0x0ea0 EQU 0x0ea0
|
|
_page_0x0fa0 EQU 0x0fa0
|
|
_elseif_0x0a3b EQU 0x0fb4
|
|
_elseif_0x0a65 EQU 0x0fda
|
|
_page_0x10a0 EQU 0x10a0
|
|
_elseif_0x0a8f EQU 0x10ac
|
|
_elseif_0x0ab9 EQU 0x10d2
|
|
_endif_0x0ade EQU 0x10f3
|
|
_page_0x11a0 EQU 0x11a0
|
|
_elseif_0x0b02 EQU 0x11bd
|
|
_elseif_0x0b1b EQU 0x11d2
|
|
_elseif_0x0b34 EQU 0x11e7
|
|
_page_0x12a0 EQU 0x12a0
|
|
_elseif_0x0b4d EQU 0x12a7
|
|
_endif_0x0b61 EQU 0x12b7
|
|
_page_0x13a0 EQU 0x13a0
|
|
_elseif_0x0bc4 EQU 0x13ac
|
|
_endif_0x0c14 EQU 0x13e8
|
|
_page_0x14a0 EQU 0x14a0
|
|
_endif_0x0c33 EQU 0x14ae
|
|
_endif_0x0c67 EQU 0x14de
|
|
_page_0x15a0 EQU 0x15a0
|
|
_endif_0x0c9b EQU 0x15bb
|
|
_endif_0x0ccf EQU 0x15eb
|
|
_page_0x16a0 EQU 0x16a0
|
|
_endif_0x0d03 EQU 0x16c5
|
|
_endif_0x0d37 EQU 0x16f5
|
|
_page_0x17a0 EQU 0x17a0
|
|
_endif_0x0d6b EQU 0x17d0
|
|
_page_0x18a0 EQU 0x18a0
|
|
_endif_0x0d9f EQU 0x18ae
|
|
_endif_0x0dd3 EQU 0x18de
|
|
_page_0x19a0 EQU 0x19a0
|
|
_page_0x1aa0 EQU 0x1aa0
|
|
_elseif_0x0e46 EQU 0x1aa4
|
|
_elseif_0x0e92 EQU 0x1aec
|
|
_page_0x1ba0 EQU 0x1ba0
|
|
_else_0x0edf EQU 0x1be6
|
|
_page_0x1ca0 EQU 0x1ca0
|
|
_endif_0x0f16 EQU 0x1ccc
|
|
_page_0x1da0 EQU 0x1da0
|
|
_endif_0x0f86 EQU 0x1dda
|
|
_endif_0x0f94 EQU 0x1de8
|
|
_page_0x1ea0 EQU 0x1ea0
|
|
_endif_0x0fb2 EQU 0x1eac
|
|
_page_0x1fa0 EQU 0x1fa0
|
|
_page_0x20a0 EQU 0x20a0
|
|
_page_0x21a0 EQU 0x21a0
|
|
_page_0x22a0 EQU 0x22a0
|
|
_endif_0x1140 EQU 0x22d4
|
|
_page_0x23a0 EQU 0x23a0
|
|
_else_0x11b4 EQU 0x23dc
|
|
_endif_0x11b8 EQU 0x23e0
|
|
_page_0x24a0 EQU 0x24a0
|
|
_elseif_0x11fb EQU 0x24c1
|
|
_page_0x25a0 EQU 0x25a0
|
|
_elseif_0x123e EQU 0x25a2
|
|
_elseif_0x1281 EQU 0x25d9
|
|
_page_0x26a0 EQU 0x26a0
|
|
_else_0x12c4 EQU 0x26bb
|
|
_endif_0x12f1 EQU 0x26e0
|
|
_page_0x27a0 EQU 0x27a0
|
|
_endif_0x1316 EQU 0x27a7
|
|
_page_0x28a0 EQU 0x28a0
|
|
_endif_0x137a EQU 0x28a7
|
|
_page_0x29a0 EQU 0x29a0
|
|
_else_0x13ee EQU 0x29b3
|
|
_endif_0x13f2 EQU 0x29b7
|
|
_elseif_0x1435 EQU 0x29ee
|
|
_page_0x2aa0 EQU 0x2aa0
|
|
_elseif_0x1478 EQU 0x2ad0
|
|
_page_0x2ba0 EQU 0x2ba0
|
|
_elseif_0x14bb EQU 0x2bb6
|
|
_else_0x14fe EQU 0x2bed
|
|
_page_0x2ca0 EQU 0x2ca0
|
|
_endif_0x152b EQU 0x2cbf
|
|
_endif_0x1550 EQU 0x2cdc
|
|
_page_0x2da0 EQU 0x2da0
|
|
_endif_0x15b4 EQU 0x2ddc
|
|
_page_0x2ea0 EQU 0x2ea0
|
|
_else_0x1628 EQU 0x2ee2
|
|
_endif_0x162c EQU 0x2ee6
|
|
_page_0x2fa0 EQU 0x2fa0
|
|
_elseif_0x166f EQU 0x2fcb
|
|
_page_0x30a0 EQU 0x30a0
|
|
_elseif_0x16b2 EQU 0x30ac
|
|
_elseif_0x16f5 EQU 0x30e3
|
|
_page_0x31a0 EQU 0x31a0
|
|
_else_0x1738 EQU 0x31cb
|
|
_endif_0x1765 EQU 0x31f0
|
|
_page_0x32a0 EQU 0x32a0
|
|
_endif_0x178a EQU 0x32b9
|
|
_page_0x33a0 EQU 0x33a0
|
|
_endif_0x17ee EQU 0x33b7
|
|
_page_0x34a0 EQU 0x34a0
|
|
_else_0x1862 EQU 0x34bf
|
|
_endif_0x1866 EQU 0x34c3
|
|
_page_0x35a0 EQU 0x35a0
|
|
_elseif_0x18a9 EQU 0x35a4
|
|
_elseif_0x18ec EQU 0x35db
|
|
_page_0x36a0 EQU 0x36a0
|
|
_elseif_0x192f EQU 0x36bd
|
|
_else_0x1972 EQU 0x36f4
|
|
_page_0x37a0 EQU 0x37a0
|
|
_endif_0x199f EQU 0x37c3
|
|
_endif_0x19c4 EQU 0x37e0
|
|
_page_0x38a0 EQU 0x38a0
|
|
_endif_0x1a28 EQU 0x38de
|
|
_page_0x39a0 EQU 0x39a0
|
|
_else_0x1a9c EQU 0x39e4
|
|
_endif_0x1aa0 EQU 0x39e8
|
|
_page_0x3aa0 EQU 0x3aa0
|
|
_elseif_0x1ae3 EQU 0x3acb
|
|
_page_0x3ba0 EQU 0x3ba0
|
|
_elseif_0x1b26 EQU 0x3bac
|
|
_elseif_0x1b69 EQU 0x3be3
|
|
_page_0x3ca0 EQU 0x3ca0
|
|
_else_0x1bac EQU 0x3ccb
|
|
_endif_0x1bd9 EQU 0x3cf0
|
|
_page_0x3da0 EQU 0x3da0
|
|
_endif_0x1bfe EQU 0x3db9
|
|
_next_0x1c05 EQU 0x3dc0
|
|
_next_0x1c15 EQU 0x3dcc
|
|
_page_0x3ea0 EQU 0x3ea0
|
|
_endif_0x1c97 EQU 0x3ec8
|
|
_page_0x3fa0 EQU 0x3fa0
|
|
_page_0x40a0 EQU 0x40a0
|
|
_endif_0x1d65 EQU 0x40c9
|
|
_endif_0x1d8d EQU 0x40eb
|
|
_page_0x41a0 EQU 0x41a0
|
|
_endif_0x1db5 EQU 0x41bb
|
|
_endif_0x1ddd EQU 0x41dd
|
|
_page_0x42a0 EQU 0x42a0
|
|
_endif_0x1e04 EQU 0x42a8
|
|
_endif_0x1e2b EQU 0x42c9
|
|
_endif_0x1e53 EQU 0x42eb
|
|
_page_0x43a0 EQU 0x43a0
|
|
_endif_0x1e7b EQU 0x43bb
|
|
_endif_0x1e96 EQU 0x43d2
|
|
_next_0x1e9d EQU 0x43d9
|
|
_page_0x44a0 EQU 0x44a0
|
|
_endif_0x1f07 EQU 0x44c6
|
|
_page_0x45a0 EQU 0x45a0
|
|
_elseif_0x1f41 EQU 0x45a2
|
|
_elseif_0x1f6a EQU 0x45c3
|
|
_endif_0x1f8e EQU 0x45df
|
|
_next_0x1f95 EQU 0x45e6
|
|
_page_0x46a0 EQU 0x46a0
|
|
_endif_0x201f EQU 0x46e9
|
|
_page_0x47a0 EQU 0x47a0
|
|
_elseif_0x209f EQU 0x47f4
|
|
_page_0x48a0 EQU 0x48a0
|
|
_endif_0x20ed EQU 0x48d8
|
|
_page_0x49a0 EQU 0x49a0
|
|
_page_0x4aa0 EQU 0x4aa0
|
|
_endif_0x21c0 EQU 0x4ac0
|
|
_elseif_0x21fa EQU 0x4aee
|
|
_page_0x4ba0 EQU 0x4ba0
|
|
_endif_0x222c EQU 0x4bbe
|
|
_elseif_0x2266 EQU 0x4bec
|
|
_page_0x4ca0 EQU 0x4ca0
|
|
_endif_0x2298 EQU 0x4cbc
|
|
_endif_0x22bf EQU 0x4cdb
|
|
_page_0x4da0 EQU 0x4da0
|
|
_endif_0x231e EQU 0x4dcc
|
|
|
|
; Global Variables
|
|
_balance EQU 0x0030
|
|
_betAmount EQU 0x0032
|
|
_winAmount EQU 0x0034
|
|
_currentRound EQU 0x0036
|
|
_selectedCard EQU 0x0038
|
|
_pickedCard EQU 0x003a
|
|
_tempCard EQU 0x003c
|
|
_tempValue1 EQU 0x003e
|
|
_tempValue2 EQU 0x0040
|
|
_tempValue3 EQU 0x0042
|
|
_straightFlag EQU 0x0044
|
|
_flushFlag EQU 0x0046
|
|
_winType EQU 0x0048
|
|
_holdX EQU 0x004a
|
|
_inputDevice EQU 0x004c
|
|
_note EQU 0x004e
|
|
_notes EQU 0x0050
|
|
_index EQU 0x0052
|
|
_suit EQU 0x0054
|
|
_i EQU 0x0056
|
|
_j EQU 0x0058
|
|
_card0 EQU 0x005a
|
|
_card1 EQU 0x005c
|
|
_card2 EQU 0x005e
|
|
_card3 EQU 0x0060
|
|
_card4 EQU 0x0062
|
|
|
|
; Local Variables
|
|
|
|
; Arrays
|
|
_cardValue_array EQU 0x71cb
|
|
_cardValue_array DB 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
_cardSuit_array EQU 0x70cb
|
|
_cardSuit_array DB 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
_cardState_array EQU 0x6fcb
|
|
_cardState_array DB 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
_hand_array EQU 0x71c5
|
|
_hand_array DB 0x00 0x00 0x00 0x00 0x00 0x00
|
|
|
|
; Strings
|
|
|
|
; Constant Strings
|
|
_str_0x71af EQU 0x71af
|
|
_str_0x71af DB 20 'Game Over. Press (A)' 0
|
|
_str_0x70b0 EQU 0x70b0
|
|
_str_0x70b0 DB 25 ' ' 0
|
|
_str_0x71a4 EQU 0x71a4
|
|
_str_0x71a4 DB 9 ' ' 0
|
|
_str_0x70aa EQU 0x70aa
|
|
_str_0x70aa DB 4 'HELD' 0
|
|
_str_0x70a4 EQU 0x70a4
|
|
_str_0x70a4 DB 4 ' ' 0
|
|
_str_0x6fb9 EQU 0x6fb9
|
|
_str_0x6fb9 DB 16 'Royal Flush x250' 0
|
|
_str_0x6fab EQU 0x6fab
|
|
_str_0x6fab DB 12 'S.Flush x50' 0
|
|
_str_0x6ef2 EQU 0x6ef2
|
|
_str_0x6ef2 DB 12 '4-Kind x25' 0
|
|
_str_0x6ee5 EQU 0x6ee5
|
|
_str_0x6ee5 DB 11 'F.House x9' 0
|
|
_str_0x6ed8 EQU 0x6ed8
|
|
_str_0x6ed8 DB 11 'Flush x6' 0
|
|
_str_0x6ecb EQU 0x6ecb
|
|
_str_0x6ecb DB 11 'Straight x4' 0
|
|
_str_0x6ebe EQU 0x6ebe
|
|
_str_0x6ebe DB 11 '3-Kind x3' 0
|
|
_str_0x6eb1 EQU 0x6eb1
|
|
_str_0x6eb1 DB 11 'Two Pair x2' 0
|
|
_str_0x6ea4 EQU 0x6ea4
|
|
_str_0x6ea4 DB 11 'Jacks+ x1' 0
|
|
_str_0x6fa2 EQU 0x6fa2
|
|
_str_0x6fa2 DB 7 'Bal:000' 0
|
|
_str_0x6df8 EQU 0x6df8
|
|
_str_0x6df8 DB 6 'Bal:00' 0
|
|
_str_0x6df1 EQU 0x6df1
|
|
_str_0x6df1 DB 5 'Bal:0' 0
|
|
_str_0x6deb EQU 0x6deb
|
|
_str_0x6deb DB 4 'Bal:' 0
|
|
_str_0x6de5 EQU 0x6de5
|
|
_str_0x6de5 DB 4 'Win:' 0
|
|
_str_0x6ddf EQU 0x6ddf
|
|
_str_0x6ddf DB 4 'Bet:' 0
|
|
_str_0x7da2 EQU 0x7da2
|
|
_str_0x7da2 DB 1 'A' 0
|
|
_str_0x7ca2 EQU 0x7ca2
|
|
_str_0x7ca2 DB 1 'K' 0
|
|
_str_0x7ba2 EQU 0x7ba2
|
|
_str_0x7ba2 DB 1 'Q' 0
|
|
_str_0x7aa2 EQU 0x7aa2
|
|
_str_0x7aa2 DB 1 'J' 0
|
|
|
|
; Data
|
|
|
|
; Time
|
|
|
|
; Define Bytes
|
|
|
|
; Define Words
|
|
|
|
; Define Images
|
|
|
|
; Define Loader Image Chunks
|
|
|
|
; Define Sprites
|
|
def_sprites_0x7da5 EQU 0x7da5
|
|
def_sprites_0x7da5 DB 63 63 63 63 63 0 63 63 63 63 0 0 63 63 63 63 0 0 63 63 63 63 0 0 63 0 0 0 63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 0 63 0 0 0 63 0 63 63 63 63 63 0 63 63 63 63 0 0 63 63 0 0 0 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x7ca5 EQU 0x7ca5
|
|
def_sprites_0x7ca5 DB 0 63 63 63 63 63 0 0 63 63 63 63 0 0 63 63 63 63 0 0 63 63 63 63 0 63 0 0 0 63 0 0 0 0 0 0 0 0 0 0 0 0 0 63 0 0 0 0 0 63 0 0 0 63 0 63 63 63 63 63 0 0 63 63 63 63 0 0 0 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x7ba5 EQU 0x7ba5
|
|
def_sprites_0x7ba5 DB 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x7aa5 EQU 0x7aa5
|
|
def_sprites_0x7aa5 DB 63 63 63 63 63 63 63 63 63 63 63 0 63 63 63 63 0 3 63 63 63 0 3 63 63 63 0 3 63 3 63 0 3 3 3 3 0 3 3 3 3 3 63 0 3 3 3 3 63 63 0 3 3 3 63 63 63 0 3 3 63 63 63 63 0 3 63 63 63 63 63 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x79a5 EQU 0x79a5
|
|
def_sprites_0x79a5 DB 0 63 63 63 63 63 3 0 63 63 63 63 3 3 0 63 63 63 3 3 3 0 63 63 3 3 3 3 0 63 3 3 3 3 3 0 3 3 3 3 3 3 3 3 3 3 3 0 3 3 3 3 0 63 3 3 3 0 63 63 3 3 0 63 63 63 3 0 63 63 63 63 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x78a5 EQU 0x78a5
|
|
def_sprites_0x78a5 DB 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x77a5 EQU 0x77a5
|
|
def_sprites_0x77a5 DB 63 63 0 0 0 63 63 0 3 3 3 0 0 3 63 63 3 3 0 3 63 3 3 3 0 3 3 3 3 3 0 3 3 3 3 3 63 0 3 3 3 3 63 63 0 3 3 3 63 63 63 0 3 3 63 63 63 63 0 3 63 63 63 63 63 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x76a5 EQU 0x76a5
|
|
def_sprites_0x76a5 DB 63 63 0 0 0 63 63 0 3 3 3 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 3 3 3 3 0 63 3 3 3 0 63 63 3 3 0 63 63 63 3 0 63 63 63 63 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x75a5 EQU 0x75a5
|
|
def_sprites_0x75a5 DB 63 63 63 63 63 63 63 63 63 63 63 63 0 63 63 63 63 63 0 63 63 63 63 63 0 63 63 63 63 63 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x74a5 EQU 0x74a5
|
|
def_sprites_0x74a5 DB 63 63 63 63 63 63 63 63 63 63 63 0 63 63 63 63 0 0 63 63 63 0 0 0 63 63 0 0 0 0 63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 63 0 0 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 0 63 63 63 63 0 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x73a5 EQU 0x73a5
|
|
def_sprites_0x73a5 DB 0 63 63 63 63 63 0 0 63 63 63 63 0 0 0 63 63 63 0 0 0 0 63 63 0 0 0 0 0 63 0 0 0 0 0 0 0 0 0 0 0 0 0 63 63 0 0 0 0 63 63 63 0 0 0 63 63 63 63 63 0 0 63 63 63 63 0 0 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
def_sprites_0x72a5 EQU 0x72a5
|
|
def_sprites_0x72a5 DB 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 0 63 63 63 63 63 0 63 63 63 63 63 0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 241
|
|
|
|
; Define Fonts
|
|
|
|
; Lookup Tables
|
|
_spriteLut_0x6dd1 EQU 0x6dd1
|
|
_spriteLut_0x6dd1 DW 0x7da5 0x0000 0x7ca5 0x0006 0x7ba5 0x000c 0x0000
|
|
_spriteLut_0x6dc3 EQU 0x6dc3
|
|
_spriteLut_0x6dc3 DW 0x7aa5 0x0000 0x79a5 0x0006 0x78a5 0x000c 0x0000
|
|
_spriteLut_0x6db5 EQU 0x6db5
|
|
_spriteLut_0x6db5 DW 0x77a5 0x0000 0x76a5 0x0006 0x75a5 0x000c 0x0000
|
|
_spriteLut_0x6da7 EQU 0x6da7
|
|
_spriteLut_0x6da7 DW 0x74a5 0x0000 0x73a5 0x0006 0x72a5 0x000c 0x0000
|
|
_spritesLut_ EQU 0x6cf8
|
|
_spritesLut_ DW 0x6dd1 0x6dc3 0x6db5 0x6da7
|
|
|
|
; Code
|
|
_entryPoint_ LDI 0x28
|
|
STW romType
|
|
RomCheck
|
|
Initialise
|
|
InitEqOp
|
|
InitGtOp ; Main: INIT
|
|
|
|
ClearVertBlinds
|
|
LDI 2
|
|
STW graphicsMode
|
|
ScanlineMode ; Main: cls : mode 2
|
|
|
|
LD 0x21
|
|
ORI 3
|
|
ST 33 ; Main: poke &h21, peek(&h21) OR 3
|
|
|
|
SoundAllOff ; Main: sound off
|
|
|
|
ClearVertBlinds ; Main: cls
|
|
|
|
LDI 25
|
|
STW _balance ; Main: balance = 25
|
|
|
|
LDI 1
|
|
STW _betAmount ; Main: betAmount = 1
|
|
|
|
LDI 0
|
|
STW _winAmount ; Main: winAmount = 0
|
|
|
|
LDI 2
|
|
STW _currentRound ; Main: currentRound = DRAW
|
|
|
|
LDI 0
|
|
STW _selectedCard ; Main: selectedCard = 0
|
|
|
|
LDI 0
|
|
STW _pickedCard ; Main: pickedCard = 0
|
|
|
|
LDI 0
|
|
STW _tempCard ; Main: tempCard = 0
|
|
|
|
LDI 0
|
|
STW _tempValue1 ; Main: tempValue1 = 0
|
|
|
|
LDI 0
|
|
STW _tempValue2 ; Main: tempValue2 = 0
|
|
|
|
LDI 0
|
|
STW _tempValue3 ; Main: tempValue3 = 0
|
|
|
|
LDI 0
|
|
STW _straightFlag ; Main: straightFlag = 0
|
|
|
|
LDI 0
|
|
STW _flushFlag ; Main: flushFlag = 0
|
|
|
|
LDI 0
|
|
STW _winType ; Main: winType = NONE
|
|
|
|
LDI 0
|
|
STW _holdX ; Main: holdX = 0
|
|
|
|
LDI 255
|
|
STW _inputDevice ; Main: inputDevice = 255
|
|
|
|
LDWI _initCards
|
|
CALL giga_vAC ; Main: gosub initCards
|
|
|
|
LDI 16
|
|
ST fgbgColour ; Main: set BG_COLOUR, 16
|
|
|
|
LDI 16
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 16
|
|
|
|
LDI 3
|
|
STW drawRectF_x1
|
|
LDI 0
|
|
STW drawRectF_y1
|
|
LDI 156
|
|
STW drawRectF_x2
|
|
LDI 47
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 3, 0, 156, 47
|
|
|
|
LDI 63
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 63
|
|
|
|
LDI 3
|
|
STW drawRect_x1
|
|
LDI 0
|
|
STW drawRect_y1
|
|
LDI 156
|
|
STW drawRect_x2
|
|
LDI 47
|
|
STW drawRect_y2
|
|
DrawRect ; Main: rect 3, 0, 156, 47
|
|
|
|
LDWI _displayPayouts
|
|
CALL giga_vAC ; Main: gosub displayPayouts
|
|
|
|
LDWI _displayCardBacks
|
|
CALL giga_vAC ; Main: gosub displayCardBacks
|
|
|
|
LDWI _displayBalance
|
|
CALL giga_vAC ; Main: gosub displayBalance
|
|
|
|
LDWI _displayBet
|
|
CALL giga_vAC ; Main: gosub displayBet
|
|
|
|
_loop LDW _currentRound
|
|
XORI 0
|
|
JumpEQ _else_0x02e6 0 ; Main: if currentRound &= GAMEOVER
|
|
|
|
LDWI _gameOverInput
|
|
CALL giga_vAC
|
|
LDWI _endif_0x02eb
|
|
CALL giga_vAC ; Main: gosub gameOverInput
|
|
|
|
_else_0x02e6 LDWI _handleInput
|
|
CALL giga_vAC ; Main: gosub handleInput
|
|
|
|
_endif_0x02eb BRA _loop ; Main: goto &loop
|
|
|
|
_handleInput PUSH
|
|
LD giga_buttonState
|
|
STW _inputDevice ; Main: inputDevice = get("BUTTON_STATE")
|
|
|
|
LDW _inputDevice
|
|
STLW 0xFE
|
|
LDWI _page_0x0300
|
|
CALL giga_vAC
|
|
_page_0x0300 LDLW 0xFE
|
|
XORI 254
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _currentRound
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
JumpFalse _endif_0x033e 3 ; Main: if (inputDevice = 254) AND (currentRound = DEAL)
|
|
|
|
LDW _selectedCard
|
|
ADDI 1
|
|
STW _selectedCard ; Main: selectedCard = selectedCard + 1
|
|
|
|
LDW _selectedCard
|
|
XORI 5
|
|
JumpEQ _endif_0x0330 2 ; Main: if selectedCard &= 5
|
|
|
|
LDI 0
|
|
STW _selectedCard ; Main: selectedCard = 0
|
|
|
|
_endif_0x0330 LDWI _selectCard
|
|
CALL giga_vAC ; Main: gosub selectCard
|
|
|
|
LDI 10
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: wait 10
|
|
|
|
_endif_0x033e LDW _inputDevice
|
|
XORI 253
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _currentRound
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
JumpFalse _endif_0x0389 5 ; Main: if (inputDevice = 253) AND (currentRound = DEAL)
|
|
|
|
LDW _selectedCard
|
|
SUBI 1
|
|
STW _selectedCard ; Main: selectedCard = selectedCard - 1
|
|
|
|
LDWI -1
|
|
XORW _selectedCard
|
|
JumpEQ _endif_0x037b 4 ; Main: if selectedCard &= -1
|
|
|
|
LDI 4
|
|
STW _selectedCard ; Main: selectedCard = 4
|
|
|
|
_endif_0x037b LDWI _selectCard
|
|
CALL giga_vAC ; Main: gosub selectCard
|
|
|
|
LDI 10
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: wait 10
|
|
|
|
_endif_0x0389 LDW _inputDevice
|
|
XORI 247
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _currentRound
|
|
XORI 2
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
JumpFalse _endif_0x03d8 7 ; Main: if (inputDevice = 247) AND (currentRound = DRAW)
|
|
|
|
LDW _betAmount
|
|
ADDI 1
|
|
STW _betAmount ; Main: betAmount = betAmount + 1
|
|
|
|
LDW _betAmount
|
|
SUBI 5
|
|
JumpGT _endif_0x03c5 6 ; Main: if betAmount &> 5
|
|
|
|
LDI 1
|
|
STW _betAmount ; Main: betAmount = 1
|
|
|
|
_endif_0x03c5 LDWI _displayBet
|
|
CALL giga_vAC ; Main: gosub displayBet
|
|
|
|
LDWI _playSndBet
|
|
CALL giga_vAC ; Main: gosub playSndBet
|
|
|
|
LDI 10
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: wait 10
|
|
|
|
_endif_0x03d8 LDW _inputDevice
|
|
XORI 251
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _currentRound
|
|
XORI 2
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
JumpFalse _endif_0x0427 9 ; Main: if (inputDevice = 251) AND (currentRound = DRAW)
|
|
|
|
LDW _betAmount
|
|
SUBI 1
|
|
STW _betAmount ; Main: betAmount = betAmount - 1
|
|
|
|
LDW _betAmount
|
|
SUBI 1
|
|
JumpLT _endif_0x0414 8 ; Main: if betAmount &< 1
|
|
|
|
LDI 5
|
|
STW _betAmount ; Main: betAmount = 5
|
|
|
|
_endif_0x0414 LDWI _displayBet
|
|
CALL giga_vAC ; Main: gosub displayBet
|
|
|
|
LDWI _playSndBet
|
|
CALL giga_vAC ; Main: gosub playSndBet
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x0400
|
|
CALL giga_vAC
|
|
_page_0x0400 LDLW 0xFE
|
|
LDI 10
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: wait 10
|
|
|
|
_endif_0x0427 LDW _inputDevice
|
|
XORI 191
|
|
JumpEQ _endif_0x04dc 14 ; Main: if inputDevice &= 191
|
|
|
|
LDW _currentRound
|
|
XORI 1
|
|
JumpEQ _else_0x0473 10 ; Main: if currentRound &= DEAL
|
|
|
|
LDI 2
|
|
STW _currentRound ; Main: currentRound = DRAW
|
|
|
|
LDWI -1
|
|
STW _selectedCard ; Main: selectedCard = -1
|
|
|
|
LDWI _selectCard
|
|
CALL giga_vAC ; Main: gosub selectCard
|
|
|
|
LDWI _drawCards
|
|
CALL giga_vAC ; Main: gosub drawCards
|
|
|
|
LDWI _displayCards
|
|
CALL giga_vAC ; Main: gosub displayCards
|
|
|
|
LDWI _checkHand
|
|
CALL giga_vAC ; Main: gosub checkHand
|
|
|
|
LDWI _updateBalance
|
|
CALL giga_vAC ; Main: gosub updateBalance
|
|
|
|
LDWI _displayPayouts
|
|
CALL giga_vAC
|
|
LDWI _endif_0x04d3
|
|
CALL giga_vAC ; Main: gosub displayPayouts
|
|
|
|
_else_0x0473 LDI 1
|
|
STW _currentRound ; Main: currentRound = DEAL
|
|
|
|
LDI 0
|
|
STW _winType ; Main: winType = NONE
|
|
|
|
LDWI _clearHand
|
|
CALL giga_vAC ; Main: gosub clearHand
|
|
|
|
LDWI _displayCardBacks
|
|
CALL giga_vAC ; Main: gosub displayCardBacks
|
|
|
|
LDW _betAmount
|
|
SUBW _balance
|
|
JumpGT _endif_0x049e 11 ; Main: if betAmount &> balance
|
|
|
|
LDW _balance
|
|
STW _betAmount ; Main: betAmount = balance
|
|
|
|
LDWI _displayBet
|
|
CALL giga_vAC ; Main: gosub displayBet
|
|
|
|
_endif_0x049e LDW _balance
|
|
SUBW _betAmount
|
|
STW _balance ; Main: balance = balance - betAmount
|
|
|
|
LDW _balance
|
|
JumpLT _endif_0x04ba 12 ; Main: if balance &< 0
|
|
|
|
LDI 0
|
|
STW _balance ; Main: balance = 0
|
|
|
|
_endif_0x04ba LDWI _displayBalance
|
|
CALL giga_vAC ; Main: gosub displayBalance
|
|
|
|
LDWI _displayPayouts
|
|
CALL giga_vAC ; Main: gosub displayPayouts
|
|
|
|
LDWI _dealCards
|
|
CALL giga_vAC ; Main: gosub dealCards
|
|
|
|
LDWI _displayCards
|
|
CALL giga_vAC ; Main: gosub displayCards
|
|
|
|
LDWI _selectCard
|
|
CALL giga_vAC ; Main: gosub selectCard
|
|
|
|
_endif_0x04d3 LDI 10
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: wait 10
|
|
|
|
_endif_0x04dc LDW _inputDevice
|
|
XORI 127
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _currentRound
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
JumpFalse _endif_0x050a 15 ; Main: if (inputDevice = 127) AND (currentRound = DEAL)
|
|
|
|
LDWI _holdCard
|
|
CALL giga_vAC ; Main: gosub holdCard
|
|
|
|
LDI 10
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: wait 10
|
|
|
|
_endif_0x050a Return ; Main: return
|
|
|
|
_gameOverInput PUSH
|
|
LD giga_buttonState
|
|
STW _inputDevice ; Main: inputDevice = get("BUTTON_STATE")
|
|
|
|
LDW _inputDevice
|
|
XORI 127
|
|
JumpEQ _endif_0x053a 16 ; Main: if inputDevice &= 127
|
|
|
|
LDI 25
|
|
STW _balance ; Main: balance = 25
|
|
|
|
LDWI _clearHand
|
|
CALL giga_vAC ; Main: gosub clearHand
|
|
|
|
LDWI _displayCardBacks
|
|
CALL giga_vAC ; Main: gosub displayCardBacks
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x0500
|
|
CALL giga_vAC
|
|
_page_0x0500 LDLW 0xFE
|
|
LDWI _displayBalance
|
|
CALL giga_vAC ; Main: gosub displayBalance
|
|
|
|
LDI 2
|
|
STW _currentRound ; Main: currentRound = DRAW
|
|
|
|
_endif_0x053a Return ; Main: return
|
|
|
|
_displayGameOver PUSH
|
|
LDI 63
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 63
|
|
|
|
LDI 3
|
|
ST fgbgColour ; Main: set BG_COLOUR, 3
|
|
|
|
LDI 20
|
|
ST cursorXY
|
|
LDI 51
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x71af
|
|
NewLine ; Main: at 20,holdY : print "Game Over. Press (A)"
|
|
|
|
LDWI _playSndUnHold
|
|
CALL giga_vAC ; Main: gosub playSndUnHold
|
|
|
|
Return ; Main: return
|
|
|
|
_playSndCardFlip PUSH
|
|
LDI 0
|
|
STW _note
|
|
STW _notes ; Main: note = 0 : notes = note
|
|
|
|
LDI 40
|
|
STW _index ; Main: index = 40
|
|
|
|
LDI 2
|
|
ST giga_soundTimer ; Main: set SOUND_TIMER, 2
|
|
|
|
LDWI _getRomNote
|
|
CALL giga_vAC ; Main: gosub getRomNote
|
|
|
|
LDI 1
|
|
ST sndChannel + 1
|
|
LDW _note
|
|
STW sndFrequency
|
|
SoundOn ; Main: sound on, 1, note
|
|
|
|
LDI 2
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 2
|
|
|
|
LDI 45
|
|
STW _index ; Main: index = 45
|
|
|
|
LDI 2
|
|
ST giga_soundTimer ; Main: set SOUND_TIMER, 2
|
|
|
|
LDWI _getRomNote
|
|
CALL giga_vAC ; Main: gosub getRomNote
|
|
|
|
LDI 1
|
|
ST sndChannel + 1
|
|
LDW _note
|
|
STW sndFrequency
|
|
SoundOn ; Main: sound on, 1, note
|
|
|
|
Return ; Main: return
|
|
|
|
_playSndHold PUSH
|
|
LDI 0
|
|
STW _note
|
|
STW _notes ; Main: note = 0 : notes = note
|
|
|
|
LDI 40
|
|
STW _index ; Main: index = 40
|
|
|
|
LDI 4
|
|
ST giga_soundTimer ; Main: set SOUND_TIMER, 4
|
|
|
|
LDWI _getRomNote
|
|
CALL giga_vAC ; Main: gosub getRomNote
|
|
|
|
LDI 1
|
|
ST sndChannel + 1
|
|
LDW _note
|
|
STW sndFrequency
|
|
SoundOn ; Main: sound on, 1, note
|
|
|
|
LDI 4
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 4
|
|
|
|
LDI 45
|
|
STW _index ; Main: index = 45
|
|
|
|
LDI 4
|
|
ST giga_soundTimer ; Main: set SOUND_TIMER, 4
|
|
|
|
LDWI _getRomNote
|
|
CALL giga_vAC ; Main: gosub getRomNote
|
|
|
|
LDI 1
|
|
ST sndChannel + 1
|
|
LDW _note
|
|
STW sndFrequency
|
|
SoundOn ; Main: sound on, 1, note
|
|
|
|
Return ; Main: return
|
|
|
|
_playSndUnHold PUSH
|
|
LDI 0
|
|
STW _note
|
|
STW _notes ; Main: note = 0 : notes = note
|
|
|
|
LDI 45
|
|
STW _index ; Main: index = 45
|
|
|
|
LDI 4
|
|
ST giga_soundTimer ; Main: set SOUND_TIMER, 4
|
|
|
|
LDWI _getRomNote
|
|
CALL giga_vAC ; Main: gosub getRomNote
|
|
|
|
LDI 1
|
|
ST sndChannel + 1
|
|
LDW _note
|
|
STW sndFrequency
|
|
SoundOn ; Main: sound on, 1, note
|
|
|
|
LDI 4
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 4
|
|
|
|
LDI 40
|
|
STW _index ; Main: index = 40
|
|
|
|
LDI 4
|
|
ST giga_soundTimer ; Main: set SOUND_TIMER, 4
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x0600
|
|
CALL giga_vAC
|
|
_page_0x0600 LDLW 0xFE
|
|
LDWI _getRomNote
|
|
CALL giga_vAC ; Main: gosub getRomNote
|
|
|
|
LDI 1
|
|
ST sndChannel + 1
|
|
LDW _note
|
|
STW sndFrequency
|
|
SoundOn ; Main: sound on, 1, note
|
|
|
|
Return ; Main: return
|
|
|
|
_playSndBet PUSH
|
|
LDI 0
|
|
STW _note
|
|
STW _notes ; Main: note = 0 : notes = note
|
|
|
|
LDW _betAmount
|
|
ADDI 60
|
|
STW _index ; Main: index = betAmount + 60
|
|
|
|
LDI 5
|
|
ST giga_soundTimer ; Main: set SOUND_TIMER, 5
|
|
|
|
LDWI _getRomNote
|
|
CALL giga_vAC ; Main: gosub getRomNote
|
|
|
|
LDI 1
|
|
ST sndChannel + 1
|
|
LDW _note
|
|
STW sndFrequency
|
|
SoundOn ; Main: sound on, 1, note
|
|
|
|
Return ; Main: return
|
|
|
|
_playSndWin PUSH
|
|
LDI 10
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 10
|
|
|
|
LDI 0
|
|
STW _note
|
|
STW _notes ; Main: note = 0 : notes = note
|
|
|
|
LDI 60
|
|
STW _index ; Main: index = 60
|
|
|
|
LDI 4
|
|
ST giga_soundTimer ; Main: set SOUND_TIMER, 4
|
|
|
|
LDWI _getRomNote
|
|
CALL giga_vAC ; Main: gosub getRomNote
|
|
|
|
LDI 1
|
|
ST sndChannel + 1
|
|
LDW _note
|
|
STW sndFrequency
|
|
SoundOn ; Main: sound on, 1, note
|
|
|
|
LDI 8
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 8
|
|
|
|
LDI 2
|
|
ST giga_soundTimer ; Main: set SOUND_TIMER, 2
|
|
|
|
LDWI _getRomNote
|
|
CALL giga_vAC ; Main: gosub getRomNote
|
|
|
|
LDI 1
|
|
ST sndChannel + 1
|
|
LDW _note
|
|
STW sndFrequency
|
|
SoundOn ; Main: sound on, 1, note
|
|
|
|
LDI 4
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 4
|
|
|
|
LDI 65
|
|
STW _index ; Main: index = 65
|
|
|
|
LDI 20
|
|
ST giga_soundTimer ; Main: set SOUND_TIMER, 20
|
|
|
|
LDWI _getRomNote
|
|
CALL giga_vAC ; Main: gosub getRomNote
|
|
|
|
LDI 1
|
|
ST sndChannel + 1
|
|
LDW _note
|
|
STW sndFrequency
|
|
SoundOn ; Main: sound on, 1, note
|
|
|
|
LDI 20
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 20
|
|
|
|
Return ; Main: return
|
|
|
|
_getRomNote PUSH ; Main: asm
|
|
|
|
LDWI 0x0900 ; Main: LDWI 0x0900
|
|
ADDW _index ; Main: ADDW _index
|
|
ADDW _index ; Main: ADDW _index
|
|
STW _notes ; Main: STW _notes
|
|
LUP 0 ; Main: LUP 0
|
|
ST _note ; Main: ST _note
|
|
LDW _notes ; Main: LDW _notes
|
|
LUP 1 ; Main: LUP 1
|
|
ST _note+1 ; Main: ST _note + 1
|
|
|
|
Return ; Main: return
|
|
|
|
_initCards PUSH
|
|
LDI 0
|
|
STW _suit ; Main: suit = 0
|
|
|
|
LDI 0
|
|
STW _i ; Main: for i = 0 to 51
|
|
|
|
_next_0x0701 LDWI 0x70cb
|
|
ADDW _i
|
|
STW memAddr
|
|
LDW _suit
|
|
POKE memAddr ; Main: cardSuit(i) = suit
|
|
|
|
LDW _i
|
|
STW mathX
|
|
LDI 13
|
|
STW mathY
|
|
LDWI divide16bit
|
|
CALL giga_vAC
|
|
LDW mathRem
|
|
ADDI 2
|
|
STW memValue
|
|
LDWI 0x71cb
|
|
ADDW _i
|
|
STW memAddr
|
|
LDW memValue
|
|
STLW 0xFE
|
|
LDWI _page_0x08a0
|
|
CALL giga_vAC
|
|
_page_0x08a0 LDLW 0xFE
|
|
POKE memAddr ; Main: cardValue(i) = 2+(i%13)
|
|
|
|
LDWI 0x6fcb
|
|
ADDW _i
|
|
STW memAddr
|
|
LDI 0
|
|
POKE memAddr ; Main: cardState(i) = INDECK
|
|
|
|
LDW _i
|
|
STW mathX
|
|
LDI 13
|
|
STW mathY
|
|
LDWI divide16bit
|
|
CALL giga_vAC
|
|
LDW mathRem
|
|
ADDI 2
|
|
XORI 14
|
|
JumpEQ _endif_0x077e 17 ; Main: if(2+(i%13) &= 14)
|
|
|
|
LDW _suit
|
|
ADDI 1
|
|
STW _suit ; Main: suit = suit + 1
|
|
|
|
_endif_0x077e ForNextFarInc _i _next_0x0701 51 ; Main: next i
|
|
|
|
Return ; Main: return
|
|
|
|
_clearHand PUSH
|
|
LDI 0
|
|
STW _i ; Main: for i = 0 to 51
|
|
|
|
_next_0x0793 LDWI 0x6fcb
|
|
ADDW _i
|
|
STW memAddr
|
|
LDI 0
|
|
POKE memAddr ; Main: cardState(i) = INDECK
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x09a0
|
|
CALL giga_vAC
|
|
_page_0x09a0 LDLW 0xFE
|
|
ForNextFarInc _i _next_0x0793 51 ; Main: next i
|
|
|
|
LDI 32
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 32
|
|
|
|
LDI 32
|
|
ST fgbgColour ; Main: set BG_COLOUR, 32
|
|
|
|
LDI 0
|
|
STW _selectedCard ; Main: selectedCard = 0
|
|
|
|
LDI 7
|
|
ST cursorXY
|
|
LDI 51
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x70b0
|
|
NewLine ; Main: at 7,holdY : print " "
|
|
|
|
LDI 0
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x71a4
|
|
NewLine ; Main: at 0,110 : print " "
|
|
|
|
Return ; Main: return
|
|
|
|
_dealCards PUSH
|
|
STLW 0xFE
|
|
LDWI _page_0x0aa0
|
|
CALL giga_vAC
|
|
_page_0x0aa0 LDLW 0xFE
|
|
LDI 0
|
|
STW _i ; Main: for i = 0 to 4
|
|
|
|
_retry1 LDI 0x34
|
|
RandMod
|
|
STW _pickedCard ; Main: pickedCard = rnd(52)
|
|
|
|
LDWI 0x6fcb
|
|
ADDW _pickedCard
|
|
PEEK
|
|
XORI 0
|
|
JumpEQ _else_0x0853 18 ; Main: if(cardState(pickedCard) &= INDECK)
|
|
|
|
LDWI 0x71c5
|
|
ADDW _i
|
|
STW memAddr
|
|
LDW _pickedCard
|
|
POKE memAddr ; Main: hand(i) = pickedCard
|
|
|
|
LDWI 0x6fcb
|
|
ADDW _pickedCard
|
|
STW memAddr
|
|
LDI 1
|
|
POKE memAddr
|
|
LDWI _endif_0x0858
|
|
CALL giga_vAC ; Main: cardState(pickedCard) = DRAWN
|
|
|
|
_else_0x0853 LDWI _retry1
|
|
CALL giga_vAC ; Main: goto retry1
|
|
|
|
_endif_0x0858 ForNextFarInc _i _retry1 4 ; Main: next i
|
|
|
|
LDI 0
|
|
STW _selectedCard ; Main: selectedCard = 0
|
|
|
|
Return ; Main: return
|
|
|
|
_cheatDeal LDWI 0x71c5
|
|
STLW 0xFE
|
|
LDWI _page_0x0ba0
|
|
CALL giga_vAC
|
|
_page_0x0ba0 LDLW 0xFE
|
|
STW memAddr
|
|
LDI 12
|
|
POKE memAddr ; Main: hand(0) = 12
|
|
|
|
LDWI 0x6fd7
|
|
STW memAddr
|
|
LDI 1
|
|
POKE memAddr ; Main: cardState(12) = DRAWN
|
|
|
|
LDWI 0x71c6
|
|
STW memAddr
|
|
LDI 11
|
|
POKE memAddr ; Main: hand(1) = 11
|
|
|
|
LDWI 0x6fd6
|
|
STW memAddr
|
|
LDI 1
|
|
POKE memAddr ; Main: cardState(11) = DRAWN
|
|
|
|
LDWI 0x71c7
|
|
STW memAddr
|
|
LDI 10
|
|
POKE memAddr ; Main: hand(2) = 10
|
|
|
|
LDWI 0x6fd5
|
|
STW memAddr
|
|
LDI 1
|
|
POKE memAddr ; Main: cardState(10) = DRAWN
|
|
|
|
LDWI 0x71c8
|
|
STW memAddr
|
|
LDI 8
|
|
POKE memAddr ; Main: hand(3) = 8
|
|
|
|
LDWI 0x6fd3
|
|
STW memAddr
|
|
LDI 1
|
|
POKE memAddr ; Main: cardState(8) = DRAWN
|
|
|
|
LDWI 0x71c9
|
|
STW memAddr
|
|
LDI 9
|
|
POKE memAddr ; Main: hand(4) = 9
|
|
|
|
LDWI 0x6fd4
|
|
STW memAddr
|
|
LDI 1
|
|
STLW 0xFE
|
|
LDWI _page_0x0ca0
|
|
CALL giga_vAC
|
|
_page_0x0ca0 LDLW 0xFE
|
|
POKE memAddr ; Main: cardState(9) = DRAWN
|
|
|
|
LDI 0
|
|
STW _selectedCard ; Main: selectedCard = 0
|
|
|
|
Return ; Main: return
|
|
|
|
_drawCards PUSH
|
|
LDI 0
|
|
STW _i ; Main: for i = 0 to 4
|
|
|
|
_next_0x08f9 LDWI 0x71c5
|
|
ADDW _i
|
|
PEEK
|
|
STW _tempCard ; Main: tempCard = hand(i)
|
|
|
|
LDWI 0x6fcb
|
|
ADDW _tempCard
|
|
PEEK
|
|
XORI 1
|
|
JumpEQ _endif_0x098f 22 ; Main: if(cardState(tempCard) &= DRAWN)
|
|
|
|
_retry2 LDI 0x34
|
|
RandMod
|
|
STW _pickedCard ; Main: pickedCard = rnd(52)
|
|
|
|
LDWI 0x6fcb
|
|
ADDW _pickedCard
|
|
PEEK
|
|
XORI 0
|
|
JumpEQ _else_0x098a 20 ; Main: if(cardState(pickedCard) &= INDECK)
|
|
|
|
LDWI 0x6fcb
|
|
ADDW _tempCard
|
|
STW memAddr
|
|
LDI 3
|
|
POKE memAddr ; Main: cardState(tempCard) = DISCARDED
|
|
|
|
LDWI 0x71c5
|
|
ADDW _i
|
|
STW memAddr
|
|
LDW _pickedCard
|
|
POKE memAddr ; Main: hand(i) = pickedCard
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x0da0
|
|
CALL giga_vAC
|
|
_page_0x0da0 LDLW 0xFE
|
|
LDWI 0x6fcb
|
|
ADDW _pickedCard
|
|
STW memAddr
|
|
LDI 1
|
|
POKE memAddr
|
|
LDWI _endif_0x098f
|
|
CALL giga_vAC ; Main: cardState(pickedCard) = DRAWN
|
|
|
|
_else_0x098a LDWI _retry2
|
|
CALL giga_vAC ; Main: goto retry2
|
|
|
|
_endif_0x098f ForNextFarInc _i _next_0x08f9 4 ; Main: next i
|
|
|
|
Return ; Main: return
|
|
|
|
_selectCard PUSH
|
|
LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
LDI 3
|
|
STW drawRect_x1
|
|
LDI 60
|
|
STW drawRect_y1
|
|
LDI 32
|
|
STW drawRect_x2
|
|
LDI 107
|
|
STW drawRect_y2
|
|
DrawRect ; Main: rect 3, cardBorderY, 32, cardBorderY2
|
|
|
|
LDI 34
|
|
STW drawRect_x1
|
|
LDI 60
|
|
STW drawRect_y1
|
|
LDI 63
|
|
STW drawRect_x2
|
|
LDI 107
|
|
STW drawRect_y2
|
|
DrawRect ; Main: rect 34, cardBorderY, 63, cardBorderY2
|
|
|
|
LDI 65
|
|
STLW 0xFE
|
|
LDWI _page_0x0ea0
|
|
CALL giga_vAC
|
|
_page_0x0ea0 LDLW 0xFE
|
|
STW drawRect_x1
|
|
LDI 60
|
|
STW drawRect_y1
|
|
LDI 94
|
|
STW drawRect_x2
|
|
LDI 107
|
|
STW drawRect_y2
|
|
DrawRect ; Main: rect 65, cardBorderY, 94, cardBorderY2
|
|
|
|
LDI 96
|
|
STW drawRect_x1
|
|
LDI 60
|
|
STW drawRect_y1
|
|
LDI 125
|
|
STW drawRect_x2
|
|
LDI 107
|
|
STW drawRect_y2
|
|
DrawRect ; Main: rect 96, cardBorderY, 125, cardBorderY2
|
|
|
|
LDI 127
|
|
STW drawRect_x1
|
|
LDI 60
|
|
STW drawRect_y1
|
|
LDI 156
|
|
STW drawRect_x2
|
|
LDI 107
|
|
STW drawRect_y2
|
|
DrawRect ; Main: rect 127, cardBorderY, 156, cardBorderY2
|
|
|
|
LDI 3
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 3
|
|
|
|
LDW _selectedCard
|
|
XORI 0
|
|
JumpEQ _elseif_0x0a3b 23 ; Main: if selectedCard &= 0
|
|
|
|
LDI 3
|
|
STW drawRect_x1
|
|
LDI 60
|
|
STW drawRect_y1
|
|
STLW 0xFE
|
|
LDWI _page_0x0fa0
|
|
CALL giga_vAC
|
|
_page_0x0fa0 LDLW 0xFE
|
|
LDI 32
|
|
STW drawRect_x2
|
|
LDI 107
|
|
STW drawRect_y2
|
|
DrawRect
|
|
LDWI _endif_0x0ade
|
|
CALL giga_vAC ; Main: rect 3, cardBorderY, 32, cardBorderY2
|
|
|
|
_elseif_0x0a3b LDW _selectedCard
|
|
XORI 1
|
|
JumpEQ _elseif_0x0a65 24 ; Main: elseif selectedCard &= 1
|
|
|
|
LDI 34
|
|
STW drawRect_x1
|
|
LDI 60
|
|
STW drawRect_y1
|
|
LDI 63
|
|
STW drawRect_x2
|
|
LDI 107
|
|
STW drawRect_y2
|
|
DrawRect
|
|
LDWI _endif_0x0ade
|
|
CALL giga_vAC ; Main: rect 34, cardBorderY, 63, cardBorderY2
|
|
|
|
_elseif_0x0a65 LDW _selectedCard
|
|
XORI 2
|
|
JumpEQ _elseif_0x0a8f 25 ; Main: elseif selectedCard &= 2
|
|
|
|
LDI 65
|
|
STW drawRect_x1
|
|
LDI 60
|
|
STW drawRect_y1
|
|
LDI 94
|
|
STW drawRect_x2
|
|
LDI 107
|
|
STW drawRect_y2
|
|
STLW 0xFE
|
|
LDWI _page_0x10a0
|
|
CALL giga_vAC
|
|
_page_0x10a0 LDLW 0xFE
|
|
DrawRect
|
|
LDWI _endif_0x0ade
|
|
CALL giga_vAC ; Main: rect 65, cardBorderY, 94, cardBorderY2
|
|
|
|
_elseif_0x0a8f LDW _selectedCard
|
|
XORI 3
|
|
JumpEQ _elseif_0x0ab9 26 ; Main: elseif selectedCard &= 3
|
|
|
|
LDI 96
|
|
STW drawRect_x1
|
|
LDI 60
|
|
STW drawRect_y1
|
|
LDI 125
|
|
STW drawRect_x2
|
|
LDI 107
|
|
STW drawRect_y2
|
|
DrawRect
|
|
LDWI _endif_0x0ade
|
|
CALL giga_vAC ; Main: rect 96, cardBorderY, 125, cardBorderY2
|
|
|
|
_elseif_0x0ab9 LDW _selectedCard
|
|
XORI 4
|
|
JumpEQ _endif_0x0ade 27 ; Main: elseif selectedCard &= 4
|
|
|
|
LDI 127
|
|
STW drawRect_x1
|
|
LDI 60
|
|
STW drawRect_y1
|
|
LDI 156
|
|
STW drawRect_x2
|
|
LDI 107
|
|
STW drawRect_y2
|
|
DrawRect ; Main: rect 127, cardBorderY, 156, cardBorderY2
|
|
|
|
_endif_0x0ade Return ; Main: return
|
|
|
|
_holdCard PUSH
|
|
LDI 31
|
|
STLW 0xFE
|
|
LDWI _page_0x11a0
|
|
CALL giga_vAC
|
|
_page_0x11a0 LDLW 0xFE
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 31
|
|
|
|
LDI 32
|
|
ST fgbgColour ; Main: set BG_COLOUR, 32
|
|
|
|
LDW _selectedCard
|
|
XORI 0
|
|
JumpEQ _elseif_0x0b02 28 ; Main: if selectedCard &= 0
|
|
|
|
LDI 7
|
|
STW _holdX
|
|
LDWI _endif_0x0b61
|
|
CALL giga_vAC ; Main: holdX = 7
|
|
|
|
_elseif_0x0b02 LDW _selectedCard
|
|
XORI 1
|
|
JumpEQ _elseif_0x0b1b 29 ; Main: elseif selectedCard &= 1
|
|
|
|
LDI 38
|
|
STW _holdX
|
|
LDWI _endif_0x0b61
|
|
CALL giga_vAC ; Main: holdX = 38
|
|
|
|
_elseif_0x0b1b LDW _selectedCard
|
|
XORI 2
|
|
JumpEQ _elseif_0x0b34 30 ; Main: elseif selectedCard &= 2
|
|
|
|
LDI 69
|
|
STW _holdX
|
|
LDWI _endif_0x0b61
|
|
CALL giga_vAC ; Main: holdX = 69
|
|
|
|
_elseif_0x0b34 LDW _selectedCard
|
|
XORI 3
|
|
JumpEQ _elseif_0x0b4d 31 ; Main: elseif selectedCard &= 3
|
|
|
|
LDI 100
|
|
STW _holdX
|
|
STLW 0xFE
|
|
LDWI _page_0x12a0
|
|
CALL giga_vAC
|
|
_page_0x12a0 LDLW 0xFE
|
|
LDWI _endif_0x0b61
|
|
CALL giga_vAC ; Main: holdX = 100
|
|
|
|
_elseif_0x0b4d LDW _selectedCard
|
|
XORI 4
|
|
JumpEQ _endif_0x0b61 32 ; Main: elseif selectedCard &= 4
|
|
|
|
LDI 131
|
|
STW _holdX ; Main: holdX = 131
|
|
|
|
_endif_0x0b61 LDWI 0x71c5
|
|
ADDW _selectedCard
|
|
PEEK
|
|
STW _tempCard ; Main: tempCard = hand(selectedCard)
|
|
|
|
LDWI 0x6fcb
|
|
ADDW _tempCard
|
|
PEEK
|
|
XORI 1
|
|
JumpEQ _elseif_0x0bc4 33 ; Main: if cardState(tempCard) &= DRAWN
|
|
|
|
LDWI 0x6fcb
|
|
ADDW _tempCard
|
|
STW memAddr
|
|
LDI 2
|
|
POKE memAddr ; Main: cardState(tempCard) = HELD
|
|
|
|
LDW _holdX
|
|
ST cursorXY
|
|
LDI 51
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x70aa
|
|
NewLine ; Main: at holdX,holdY : print "HELD"
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x13a0
|
|
CALL giga_vAC
|
|
_page_0x13a0 LDLW 0xFE
|
|
LDWI _playSndHold
|
|
CALL giga_vAC
|
|
LDWI _endif_0x0c14
|
|
CALL giga_vAC ; Main: gosub playSndHold
|
|
|
|
_elseif_0x0bc4 LDWI 0x6fcb
|
|
ADDW _tempCard
|
|
PEEK
|
|
XORI 2
|
|
JumpEQ _endif_0x0c14 34 ; Main: elseif cardState(tempCard) &= HELD
|
|
|
|
LDWI 0x6fcb
|
|
ADDW _tempCard
|
|
STW memAddr
|
|
LDI 1
|
|
POKE memAddr ; Main: cardState(tempCard) = DRAWN
|
|
|
|
LDW _holdX
|
|
ST cursorXY
|
|
LDI 51
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x70a4
|
|
NewLine ; Main: at holdX,holdY : print " "
|
|
|
|
LDWI _playSndUnHold
|
|
CALL giga_vAC ; Main: gosub playSndUnHold
|
|
|
|
_endif_0x0c14 Return ; Main: return
|
|
|
|
_displayPayouts PUSH
|
|
LDI 16
|
|
ST fgbgColour ; Main: set BG_COLOUR, 16
|
|
|
|
LDI 42
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 42
|
|
|
|
LDW _winType
|
|
XORI 10
|
|
STLW 0xFE
|
|
LDWI _page_0x14a0
|
|
CALL giga_vAC
|
|
_page_0x14a0 LDLW 0xFE
|
|
JumpEQ _endif_0x0c33 35 ; Main: if winType &= ROYALFLUSH
|
|
|
|
LDI 15
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 15
|
|
|
|
_endif_0x0c33 LDI 32
|
|
ST cursorXY
|
|
LDI 2
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6fb9
|
|
NewLine ; Main: at 32,2 : print "Royal Flush x250"
|
|
|
|
LDI 42
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 42
|
|
|
|
LDW _winType
|
|
XORI 9
|
|
JumpEQ _endif_0x0c67 36 ; Main: if winType &= STRAIGHTFLUSH
|
|
|
|
LDI 15
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 15
|
|
|
|
_endif_0x0c67 LDI 5
|
|
ST cursorXY
|
|
LDI 11
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6fab
|
|
STLW 0xFE
|
|
LDWI _page_0x15a0
|
|
CALL giga_vAC
|
|
_page_0x15a0 LDLW 0xFE
|
|
NewLine ; Main: at 5,11 : print "S.Flush x50"
|
|
|
|
LDI 42
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 42
|
|
|
|
LDW _winType
|
|
XORI 7
|
|
JumpEQ _endif_0x0c9b 37 ; Main: if winType &= FOUROFAKIND
|
|
|
|
LDI 15
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 15
|
|
|
|
_endif_0x0c9b LDI 5
|
|
ST cursorXY
|
|
LDI 20
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6ef2
|
|
NewLine ; Main: at 5,20 : print "4-Kind x25"
|
|
|
|
LDI 42
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 42
|
|
|
|
LDW _winType
|
|
XORI 6
|
|
JumpEQ _endif_0x0ccf 38 ; Main: if winType &= FULLHOUSE
|
|
|
|
LDI 15
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 15
|
|
|
|
_endif_0x0ccf LDI 5
|
|
ST cursorXY
|
|
LDI 29
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
STLW 0xFE
|
|
LDWI _page_0x16a0
|
|
CALL giga_vAC
|
|
_page_0x16a0 LDLW 0xFE
|
|
PrintString _str_0x6ee5
|
|
NewLine ; Main: at 5,29 : print "F.House x9"
|
|
|
|
LDI 42
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 42
|
|
|
|
LDW _winType
|
|
XORI 5
|
|
JumpEQ _endif_0x0d03 39 ; Main: if winType &= FLUSH
|
|
|
|
LDI 15
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 15
|
|
|
|
_endif_0x0d03 LDI 5
|
|
ST cursorXY
|
|
LDI 38
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6ed8
|
|
NewLine ; Main: at 5,38 : print "Flush x6"
|
|
|
|
LDI 42
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 42
|
|
|
|
LDW _winType
|
|
XORI 4
|
|
JumpEQ _endif_0x0d37 40 ; Main: if winType &= STRAIGHT
|
|
|
|
LDI 15
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 15
|
|
|
|
_endif_0x0d37 LDI 90
|
|
STLW 0xFE
|
|
LDWI _page_0x17a0
|
|
CALL giga_vAC
|
|
_page_0x17a0 LDLW 0xFE
|
|
ST cursorXY
|
|
LDI 11
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6ecb
|
|
NewLine ; Main: at 90,11 : print "Straight x4"
|
|
|
|
LDI 42
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 42
|
|
|
|
LDW _winType
|
|
XORI 3
|
|
JumpEQ _endif_0x0d6b 41 ; Main: if winType &= THREEOFAKIND
|
|
|
|
LDI 15
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 15
|
|
|
|
_endif_0x0d6b LDI 90
|
|
ST cursorXY
|
|
LDI 20
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6ebe
|
|
NewLine ; Main: at 90,20 : print "3-Kind x3"
|
|
|
|
LDI 42
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 42
|
|
|
|
LDW _winType
|
|
XORI 2
|
|
STLW 0xFE
|
|
LDWI _page_0x18a0
|
|
CALL giga_vAC
|
|
_page_0x18a0 LDLW 0xFE
|
|
JumpEQ _endif_0x0d9f 42 ; Main: if winType &= TWOPAIR
|
|
|
|
LDI 15
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 15
|
|
|
|
_endif_0x0d9f LDI 90
|
|
ST cursorXY
|
|
LDI 29
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6eb1
|
|
NewLine ; Main: at 90,29 : print "Two Pair x2"
|
|
|
|
LDI 42
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 42
|
|
|
|
LDW _winType
|
|
XORI 1
|
|
JumpEQ _endif_0x0dd3 43 ; Main: if winType &= JACKSORBETTER
|
|
|
|
LDI 15
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 15
|
|
|
|
_endif_0x0dd3 LDI 90
|
|
ST cursorXY
|
|
LDI 38
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6ea4
|
|
STLW 0xFE
|
|
LDWI _page_0x19a0
|
|
CALL giga_vAC
|
|
_page_0x19a0 LDLW 0xFE
|
|
NewLine ; Main: at 90,38 : print "Jacks+ x1"
|
|
|
|
Return ; Main: return
|
|
|
|
_displayBalance PUSH
|
|
LDI 32
|
|
ST fgbgColour ; Main: set BG_COLOUR, 32
|
|
|
|
LDI 63
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 63
|
|
|
|
LDW _balance
|
|
SUBI 10
|
|
JumpLT _elseif_0x0e46 44 ; Main: if balance &< 10
|
|
|
|
LDI 106
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6fa2
|
|
NewLine ; Main: at 106,110 : print "Bal:000"
|
|
|
|
LDI 148
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
LDW _balance
|
|
PrintAcInt16
|
|
NewLine
|
|
LDWI _endif_0x0f16
|
|
STLW 0xFE
|
|
LDWI _page_0x1aa0
|
|
CALL giga_vAC
|
|
_page_0x1aa0 LDLW 0xFE
|
|
CALL giga_vAC ; Main: at 148,110 : print balance
|
|
|
|
_elseif_0x0e46 LDW _balance
|
|
SUBI 100
|
|
JumpLT _elseif_0x0e92 45 ; Main: elseif balance &< 100
|
|
|
|
LDI 106
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6df8
|
|
NewLine ; Main: at 106,110 : print "Bal:00"
|
|
|
|
LDI 142
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
LDW _balance
|
|
PrintAcInt16
|
|
NewLine
|
|
LDWI _endif_0x0f16
|
|
CALL giga_vAC ; Main: at 142,110 : print balance
|
|
|
|
_elseif_0x0e92 LDWI 999
|
|
SUBW _balance
|
|
STLW 0xFE
|
|
LDWI _page_0x1ba0
|
|
CALL giga_vAC
|
|
_page_0x1ba0 LDLW 0xFE
|
|
JumpGE _else_0x0edf 46 ; Main: elseif balance &< 999
|
|
|
|
LDI 106
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6df1
|
|
NewLine ; Main: at 106,110 : print "Bal:0"
|
|
|
|
LDI 136
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
LDW _balance
|
|
PrintAcInt16
|
|
NewLine
|
|
LDWI _endif_0x0f16
|
|
CALL giga_vAC ; Main: at 136,110 : print balance
|
|
|
|
_else_0x0edf LDI 106
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
STLW 0xFE
|
|
LDWI _page_0x1ca0
|
|
CALL giga_vAC
|
|
_page_0x1ca0 LDLW 0xFE
|
|
PrintString _str_0x6deb
|
|
NewLine ; Main: at 106,110 : print "Bal:"
|
|
|
|
LDI 130
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
LDW _balance
|
|
PrintAcInt16
|
|
NewLine ; Main: at 130,110 : print balance
|
|
|
|
_endif_0x0f16 Return ; Main: return
|
|
|
|
_updateBalance PUSH
|
|
LDW _winAmount
|
|
JumpGT _endif_0x0f94 49 ; Main: if winAmount &> 0
|
|
|
|
LDI 3
|
|
ST fgbgColour ; Main: set BG_COLOUR, 3
|
|
|
|
LDI 15
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 15
|
|
|
|
LDI 3
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6de5
|
|
STLW 0xFE
|
|
LDWI _page_0x1da0
|
|
CALL giga_vAC
|
|
_page_0x1da0 LDLW 0xFE
|
|
NewLine ; Main: at 3,110 : print "Win:"
|
|
|
|
LDI 26
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
LDW _winAmount
|
|
PrintAcInt16
|
|
NewLine ; Main: at 26,110 : print winAmount
|
|
|
|
LDW _balance
|
|
ADDW _winAmount
|
|
STW _balance ; Main: balance = balance + winAmount
|
|
|
|
LDWI 9999
|
|
SUBW _balance
|
|
JumpLE _endif_0x0f86 48 ; Main: if balance &> 9999
|
|
|
|
LDWI 9999
|
|
STW _balance ; Main: balance = 9999
|
|
|
|
_endif_0x0f86 LDI 0
|
|
STW _winAmount ; Main: winAmount = 0
|
|
|
|
LDWI _displayBalance
|
|
CALL giga_vAC ; Main: gosub displayBalance
|
|
|
|
LDWI _playSndWin
|
|
CALL giga_vAC ; Main: gosub playSndWin
|
|
|
|
_endif_0x0f94 LDW _balance
|
|
SUBI 1
|
|
JumpLT _endif_0x0fb2 50 ; Main: if balance &< 1
|
|
|
|
LDI 0
|
|
STW _currentRound ; Main: currentRound = GAMEOVER
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x1ea0
|
|
CALL giga_vAC
|
|
_page_0x1ea0 LDLW 0xFE
|
|
LDWI _clearHand
|
|
CALL giga_vAC ; Main: gosub clearHand
|
|
|
|
LDWI _displayGameOver
|
|
CALL giga_vAC ; Main: gosub displayGameOver
|
|
|
|
_endif_0x0fb2 Return ; Main: return
|
|
|
|
_displayBet PUSH
|
|
LDI 32
|
|
ST fgbgColour ; Main: set BG_COLOUR, 32
|
|
|
|
LDI 63
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 63
|
|
|
|
LDI 57
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x6ddf
|
|
NewLine ; Main: at 57,110 : print "Bet:"
|
|
|
|
LDI 80
|
|
ST cursorXY
|
|
LDI 110
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
LDW _betAmount
|
|
PrintAcInt16
|
|
NewLine ; Main: at 80,110 : print betAmount
|
|
|
|
Return ; Main: return
|
|
|
|
_displayCardBacks PUSH
|
|
LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
LDI 3
|
|
STLW 0xFE
|
|
LDWI _page_0x1fa0
|
|
CALL giga_vAC
|
|
_page_0x1fa0 LDLW 0xFE
|
|
STW drawRectF_x1
|
|
LDI 60
|
|
STW drawRectF_y1
|
|
LDI 32
|
|
STW drawRectF_x2
|
|
LDI 107
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 3, cardBorderY, 32, cardBorderY2
|
|
|
|
LDI 34
|
|
STW drawRectF_x1
|
|
LDI 60
|
|
STW drawRectF_y1
|
|
LDI 63
|
|
STW drawRectF_x2
|
|
LDI 107
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 34, cardBorderY, 63, cardBorderY2
|
|
|
|
LDI 65
|
|
STW drawRectF_x1
|
|
LDI 60
|
|
STW drawRectF_y1
|
|
LDI 94
|
|
STW drawRectF_x2
|
|
LDI 107
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 65, cardBorderY, 94, cardBorderY2
|
|
|
|
LDI 96
|
|
STW drawRectF_x1
|
|
LDI 60
|
|
STW drawRectF_y1
|
|
LDI 125
|
|
STW drawRectF_x2
|
|
LDI 107
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 96, cardBorderY, 125, cardBorderY2
|
|
|
|
LDI 127
|
|
STW drawRectF_x1
|
|
STLW 0xFE
|
|
LDWI _page_0x20a0
|
|
CALL giga_vAC
|
|
_page_0x20a0 LDLW 0xFE
|
|
LDI 60
|
|
STW drawRectF_y1
|
|
LDI 156
|
|
STW drawRectF_x2
|
|
LDI 107
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 127, cardBorderY, 156, cardBorderY2
|
|
|
|
LDI 21
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 21
|
|
|
|
LDI 4
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 31
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 4, cardY, 31, cardY2
|
|
|
|
LDI 35
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 62
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 35, cardY, 62, cardY2
|
|
|
|
LDI 66
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 93
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 66, cardY, 93, cardY2
|
|
|
|
LDI 97
|
|
STLW 0xFE
|
|
LDWI _page_0x21a0
|
|
CALL giga_vAC
|
|
_page_0x21a0 LDLW 0xFE
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 124
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 97, cardY, 124, cardY2
|
|
|
|
LDI 128
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 155
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 128, cardY, 155, cardY2
|
|
|
|
Return ; Main: return
|
|
|
|
_displayCards PUSH
|
|
LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
LDI 63
|
|
ST fgbgColour ; Main: set BG_COLOUR, 63
|
|
|
|
LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x6fcb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 1
|
|
JumpEQ _endif_0x1316 59 ; Main: if cardState(hand(0)) &= DRAWN
|
|
|
|
LDW _currentRound
|
|
XORI 2
|
|
JumpEQ _endif_0x1140 51 ; Main: if currentRound &= DRAW
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x22a0
|
|
CALL giga_vAC
|
|
_page_0x22a0 LDLW 0xFE
|
|
LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
LDI 3
|
|
STW drawRectF_x1
|
|
LDI 60
|
|
STW drawRectF_y1
|
|
LDI 32
|
|
STW drawRectF_x2
|
|
LDI 107
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 3, cardBorderY, 32, cardBorderY2
|
|
|
|
LDI 21
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 21
|
|
|
|
LDI 4
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 31
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 4, cardY, 31, cardY2
|
|
|
|
_endif_0x1140 LDI 8
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 8
|
|
|
|
LDWI _playSndCardFlip
|
|
CALL giga_vAC ; Main: gosub playSndCardFlip
|
|
|
|
LDI 63
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 63
|
|
|
|
LDI 4
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 31
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
STLW 0xFE
|
|
LDWI _page_0x23a0
|
|
CALL giga_vAC
|
|
_page_0x23a0 LDLW 0xFE
|
|
DrawRectF ; Main: rectf 4, cardY, 31, cardY2
|
|
|
|
LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 2
|
|
CALL convertEqOpAddr
|
|
STW 0xea
|
|
LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
ORW 0xea
|
|
JumpFalse _else_0x11b4 52 ; Main: if (cardSuit(hand(0)) = HEARTS) OR (cardSuit(hand(0)) = DIAMONDS)
|
|
|
|
LDI 3
|
|
ST fgbgColour + 1
|
|
LDWI _endif_0x11b8
|
|
CALL giga_vAC ; Main: set FG_COLOUR, 3
|
|
|
|
_else_0x11b4 LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
_endif_0x11b8 LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 14
|
|
JumpEQ _elseif_0x11fb 54 ; Main: if cardValue(hand(0)) &= 14
|
|
|
|
LDI 7
|
|
STLW 0xFE
|
|
LDWI _page_0x24a0
|
|
CALL giga_vAC
|
|
_page_0x24a0 LDLW 0xFE
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7da2
|
|
NewLine
|
|
LDWI _endif_0x12f1
|
|
CALL giga_vAC ; Main: at 7,cardValueY : print "A"
|
|
|
|
_elseif_0x11fb LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 13
|
|
JumpEQ _elseif_0x123e 55 ; Main: elseif cardValue(hand(0)) &= 13
|
|
|
|
LDI 7
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7ca2
|
|
NewLine
|
|
LDWI _endif_0x12f1
|
|
CALL giga_vAC ; Main: at 7,cardValueY : print "K"
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x25a0
|
|
CALL giga_vAC
|
|
_page_0x25a0 LDLW 0xFE
|
|
_elseif_0x123e LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 12
|
|
JumpEQ _elseif_0x1281 56 ; Main: elseif cardValue(hand(0)) &= 12
|
|
|
|
LDI 7
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7ba2
|
|
NewLine
|
|
LDWI _endif_0x12f1
|
|
CALL giga_vAC ; Main: at 7,cardValueY : print "Q"
|
|
|
|
_elseif_0x1281 LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 11
|
|
JumpEQ _else_0x12c4 57 ; Main: elseif cardValue(hand(0)) &= 11
|
|
|
|
LDI 7
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
STLW 0xFE
|
|
LDWI _page_0x26a0
|
|
CALL giga_vAC
|
|
_page_0x26a0 LDLW 0xFE
|
|
AtTextCursor
|
|
PrintString _str_0x7aa2
|
|
NewLine
|
|
LDWI _endif_0x12f1
|
|
CALL giga_vAC ; Main: at 7,cardValueY : print "J"
|
|
|
|
_else_0x12c4 LDI 7
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
PrintAcInt16
|
|
NewLine ; Main: at 7,cardValueY : print cardValue(hand(0))
|
|
|
|
_endif_0x12f1 LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW spriteId
|
|
LDI 11
|
|
ST spriteXY
|
|
LDI 78
|
|
ADDI 8
|
|
ST spriteXY + 1
|
|
STLW 0xFE
|
|
LDWI _page_0x27a0
|
|
CALL giga_vAC
|
|
_page_0x27a0 LDLW 0xFE
|
|
DrawSprite ; Main: sprite noFlip, cardSuit(hand(0)), 11, cardSuitY
|
|
|
|
_endif_0x1316 LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x6fcb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 1
|
|
JumpEQ _endif_0x1550 68 ; Main: if cardState(hand(1)) &= DRAWN
|
|
|
|
LDW _currentRound
|
|
XORI 2
|
|
JumpEQ _endif_0x137a 60 ; Main: if currentRound &= DRAW
|
|
|
|
LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
LDI 34
|
|
STW drawRectF_x1
|
|
LDI 60
|
|
STW drawRectF_y1
|
|
LDI 63
|
|
STW drawRectF_x2
|
|
LDI 107
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 34, cardBorderY, 63, cardBorderY2
|
|
|
|
LDI 21
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 21
|
|
|
|
LDI 35
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 62
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
STLW 0xFE
|
|
LDWI _page_0x28a0
|
|
CALL giga_vAC
|
|
_page_0x28a0 LDLW 0xFE
|
|
DrawRectF ; Main: rectf 35, cardY, 62, cardY2
|
|
|
|
_endif_0x137a LDI 8
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 8
|
|
|
|
LDWI _playSndCardFlip
|
|
CALL giga_vAC ; Main: gosub playSndCardFlip
|
|
|
|
LDI 63
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 63
|
|
|
|
LDI 35
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 62
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 35, cardY, 62, cardY2
|
|
|
|
LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 2
|
|
CALL convertEqOpAddr
|
|
STW 0xea
|
|
LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
ORW 0xea
|
|
STLW 0xFE
|
|
LDWI _page_0x29a0
|
|
CALL giga_vAC
|
|
_page_0x29a0 LDLW 0xFE
|
|
JumpFalse _else_0x13ee 61 ; Main: if (cardSuit(hand(1)) = HEARTS) OR (cardSuit(hand(1)) = DIAMONDS)
|
|
|
|
LDI 3
|
|
ST fgbgColour + 1
|
|
LDWI _endif_0x13f2
|
|
CALL giga_vAC ; Main: set FG_COLOUR, 3
|
|
|
|
_else_0x13ee LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
_endif_0x13f2 LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 14
|
|
JumpEQ _elseif_0x1435 63 ; Main: if cardValue(hand(1)) &= 14
|
|
|
|
LDI 38
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7da2
|
|
NewLine
|
|
LDWI _endif_0x152b
|
|
CALL giga_vAC ; Main: at 38,cardValueY : print "A"
|
|
|
|
_elseif_0x1435 LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
STLW 0xFE
|
|
LDWI _page_0x2aa0
|
|
CALL giga_vAC
|
|
_page_0x2aa0 LDLW 0xFE
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 13
|
|
JumpEQ _elseif_0x1478 64 ; Main: elseif cardValue(hand(1)) &= 13
|
|
|
|
LDI 38
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7ca2
|
|
NewLine
|
|
LDWI _endif_0x152b
|
|
CALL giga_vAC ; Main: at 38,cardValueY : print "K"
|
|
|
|
_elseif_0x1478 LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 12
|
|
JumpEQ _elseif_0x14bb 65 ; Main: elseif cardValue(hand(1)) &= 12
|
|
|
|
LDI 38
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
STLW 0xFE
|
|
LDWI _page_0x2ba0
|
|
CALL giga_vAC
|
|
_page_0x2ba0 LDLW 0xFE
|
|
PrintString _str_0x7ba2
|
|
NewLine
|
|
LDWI _endif_0x152b
|
|
CALL giga_vAC ; Main: at 38,cardValueY : print "Q"
|
|
|
|
_elseif_0x14bb LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 11
|
|
JumpEQ _else_0x14fe 66 ; Main: elseif cardValue(hand(1)) &= 11
|
|
|
|
LDI 38
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7aa2
|
|
NewLine
|
|
LDWI _endif_0x152b
|
|
CALL giga_vAC ; Main: at 38,cardValueY : print "J"
|
|
|
|
_else_0x14fe LDI 38
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
STLW 0xFE
|
|
LDWI _page_0x2ca0
|
|
CALL giga_vAC
|
|
_page_0x2ca0 LDLW 0xFE
|
|
AtTextCursor
|
|
LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
PrintAcInt16
|
|
NewLine ; Main: at 38,cardValueY : print cardValue(hand(1))
|
|
|
|
_endif_0x152b LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW spriteId
|
|
LDI 42
|
|
ST spriteXY
|
|
LDI 78
|
|
ADDI 8
|
|
ST spriteXY + 1
|
|
DrawSprite ; Main: sprite noFlip, cardSuit(hand(1)), 42, cardSuitY
|
|
|
|
_endif_0x1550 LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x6fcb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 1
|
|
JumpEQ _endif_0x178a 77 ; Main: if cardState(hand(2)) &= DRAWN
|
|
|
|
LDW _currentRound
|
|
XORI 2
|
|
STLW 0xFE
|
|
LDWI _page_0x2da0
|
|
CALL giga_vAC
|
|
_page_0x2da0 LDLW 0xFE
|
|
JumpEQ _endif_0x15b4 69 ; Main: if currentRound &= DRAW
|
|
|
|
LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
LDI 65
|
|
STW drawRectF_x1
|
|
LDI 60
|
|
STW drawRectF_y1
|
|
LDI 94
|
|
STW drawRectF_x2
|
|
LDI 107
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 65, cardBorderY, 94, cardBorderY2
|
|
|
|
LDI 21
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 21
|
|
|
|
LDI 66
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 93
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 66, cardY, 93, cardY2
|
|
|
|
_endif_0x15b4 LDI 8
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 8
|
|
|
|
LDWI _playSndCardFlip
|
|
CALL giga_vAC ; Main: gosub playSndCardFlip
|
|
|
|
LDI 63
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 63
|
|
|
|
LDI 66
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 93
|
|
STLW 0xFE
|
|
LDWI _page_0x2ea0
|
|
CALL giga_vAC
|
|
_page_0x2ea0 LDLW 0xFE
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 66, cardY, 93, cardY2
|
|
|
|
LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 2
|
|
CALL convertEqOpAddr
|
|
STW 0xea
|
|
LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
ORW 0xea
|
|
JumpFalse _else_0x1628 70 ; Main: if (cardSuit(hand(2)) = HEARTS) OR (cardSuit(hand(2)) = DIAMONDS)
|
|
|
|
LDI 3
|
|
ST fgbgColour + 1
|
|
LDWI _endif_0x162c
|
|
CALL giga_vAC ; Main: set FG_COLOUR, 3
|
|
|
|
_else_0x1628 LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
_endif_0x162c LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 14
|
|
STLW 0xFE
|
|
LDWI _page_0x2fa0
|
|
CALL giga_vAC
|
|
_page_0x2fa0 LDLW 0xFE
|
|
JumpEQ _elseif_0x166f 72 ; Main: if cardValue(hand(2)) &= 14
|
|
|
|
LDI 69
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7da2
|
|
NewLine
|
|
LDWI _endif_0x1765
|
|
CALL giga_vAC ; Main: at 69,cardValueY : print "A"
|
|
|
|
_elseif_0x166f LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 13
|
|
JumpEQ _elseif_0x16b2 73 ; Main: elseif cardValue(hand(2)) &= 13
|
|
|
|
LDI 69
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7ca2
|
|
STLW 0xFE
|
|
LDWI _page_0x30a0
|
|
CALL giga_vAC
|
|
_page_0x30a0 LDLW 0xFE
|
|
NewLine
|
|
LDWI _endif_0x1765
|
|
CALL giga_vAC ; Main: at 69,cardValueY : print "K"
|
|
|
|
_elseif_0x16b2 LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 12
|
|
JumpEQ _elseif_0x16f5 74 ; Main: elseif cardValue(hand(2)) &= 12
|
|
|
|
LDI 69
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7ba2
|
|
NewLine
|
|
LDWI _endif_0x1765
|
|
CALL giga_vAC ; Main: at 69,cardValueY : print "Q"
|
|
|
|
_elseif_0x16f5 LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 11
|
|
STLW 0xFE
|
|
LDWI _page_0x31a0
|
|
CALL giga_vAC
|
|
_page_0x31a0 LDLW 0xFE
|
|
JumpEQ _else_0x1738 75 ; Main: elseif cardValue(hand(2)) &= 11
|
|
|
|
LDI 69
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7aa2
|
|
NewLine
|
|
LDWI _endif_0x1765
|
|
CALL giga_vAC ; Main: at 69,cardValueY : print "J"
|
|
|
|
_else_0x1738 LDI 69
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
PrintAcInt16
|
|
NewLine ; Main: at 69,cardValueY : print cardValue(hand(2))
|
|
|
|
_endif_0x1765 LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
STLW 0xFE
|
|
LDWI _page_0x32a0
|
|
CALL giga_vAC
|
|
_page_0x32a0 LDLW 0xFE
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW spriteId
|
|
LDI 73
|
|
ST spriteXY
|
|
LDI 78
|
|
ADDI 8
|
|
ST spriteXY + 1
|
|
DrawSprite ; Main: sprite noFlip, cardSuit(hand(2)), 73, cardSuitY
|
|
|
|
_endif_0x178a LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x6fcb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 1
|
|
JumpEQ _endif_0x19c4 86 ; Main: if cardState(hand(3)) &= DRAWN
|
|
|
|
LDW _currentRound
|
|
XORI 2
|
|
JumpEQ _endif_0x17ee 78 ; Main: if currentRound &= DRAW
|
|
|
|
LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
LDI 96
|
|
STW drawRectF_x1
|
|
LDI 60
|
|
STW drawRectF_y1
|
|
LDI 125
|
|
STW drawRectF_x2
|
|
LDI 107
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 96, cardBorderY, 125, cardBorderY2
|
|
|
|
LDI 21
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 21
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x33a0
|
|
CALL giga_vAC
|
|
_page_0x33a0 LDLW 0xFE
|
|
LDI 97
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 124
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 97, cardY, 124, cardY2
|
|
|
|
_endif_0x17ee LDI 8
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 8
|
|
|
|
LDWI _playSndCardFlip
|
|
CALL giga_vAC ; Main: gosub playSndCardFlip
|
|
|
|
LDI 63
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 63
|
|
|
|
LDI 97
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 124
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 97, cardY, 124, cardY2
|
|
|
|
LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 2
|
|
CALL convertEqOpAddr
|
|
STW 0xea
|
|
LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
STLW 0xFE
|
|
LDWI _page_0x34a0
|
|
CALL giga_vAC
|
|
_page_0x34a0 LDLW 0xFE
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
ORW 0xea
|
|
JumpFalse _else_0x1862 79 ; Main: if (cardSuit(hand(3)) = HEARTS) OR (cardSuit(hand(3)) = DIAMONDS)
|
|
|
|
LDI 3
|
|
ST fgbgColour + 1
|
|
LDWI _endif_0x1866
|
|
CALL giga_vAC ; Main: set FG_COLOUR, 3
|
|
|
|
_else_0x1862 LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
_endif_0x1866 LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 14
|
|
JumpEQ _elseif_0x18a9 81 ; Main: if cardValue(hand(3)) &= 14
|
|
|
|
LDI 100
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7da2
|
|
NewLine
|
|
LDWI _endif_0x199f
|
|
STLW 0xFE
|
|
LDWI _page_0x35a0
|
|
CALL giga_vAC
|
|
_page_0x35a0 LDLW 0xFE
|
|
CALL giga_vAC ; Main: at 100,cardValueY : print "A"
|
|
|
|
_elseif_0x18a9 LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 13
|
|
JumpEQ _elseif_0x18ec 82 ; Main: elseif cardValue(hand(3)) &= 13
|
|
|
|
LDI 100
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7ca2
|
|
NewLine
|
|
LDWI _endif_0x199f
|
|
CALL giga_vAC ; Main: at 100,cardValueY : print "K"
|
|
|
|
_elseif_0x18ec LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 12
|
|
JumpEQ _elseif_0x192f 83 ; Main: elseif cardValue(hand(3)) &= 12
|
|
|
|
LDI 100
|
|
ST cursorXY
|
|
LDI 63
|
|
STLW 0xFE
|
|
LDWI _page_0x36a0
|
|
CALL giga_vAC
|
|
_page_0x36a0 LDLW 0xFE
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7ba2
|
|
NewLine
|
|
LDWI _endif_0x199f
|
|
CALL giga_vAC ; Main: at 100,cardValueY : print "Q"
|
|
|
|
_elseif_0x192f LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 11
|
|
JumpEQ _else_0x1972 84 ; Main: elseif cardValue(hand(3)) &= 11
|
|
|
|
LDI 100
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7aa2
|
|
NewLine
|
|
LDWI _endif_0x199f
|
|
CALL giga_vAC ; Main: at 100,cardValueY : print "J"
|
|
|
|
_else_0x1972 LDI 100
|
|
ST cursorXY
|
|
STLW 0xFE
|
|
LDWI _page_0x37a0
|
|
CALL giga_vAC
|
|
_page_0x37a0 LDLW 0xFE
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
PrintAcInt16
|
|
NewLine ; Main: at 100,cardValueY : print cardValue(hand(3))
|
|
|
|
_endif_0x199f LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW spriteId
|
|
LDI 104
|
|
ST spriteXY
|
|
LDI 78
|
|
ADDI 8
|
|
ST spriteXY + 1
|
|
DrawSprite ; Main: sprite noFlip, cardSuit(hand(3)), 104, cardSuitY
|
|
|
|
_endif_0x19c4 LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x6fcb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 1
|
|
JumpEQ _endif_0x1bfe 95 ; Main: if cardState(hand(4)) &= DRAWN
|
|
|
|
LDW _currentRound
|
|
STLW 0xFE
|
|
LDWI _page_0x38a0
|
|
CALL giga_vAC
|
|
_page_0x38a0 LDLW 0xFE
|
|
XORI 2
|
|
JumpEQ _endif_0x1a28 87 ; Main: if currentRound &= DRAW
|
|
|
|
LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
LDI 127
|
|
STW drawRectF_x1
|
|
LDI 60
|
|
STW drawRectF_y1
|
|
LDI 156
|
|
STW drawRectF_x2
|
|
LDI 107
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 127, cardBorderY, 156, cardBorderY2
|
|
|
|
LDI 21
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 21
|
|
|
|
LDI 128
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
LDI 155
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 128, cardY, 155, cardY2
|
|
|
|
_endif_0x1a28 LDI 8
|
|
STW waitVBlankNum
|
|
WaitVBlanks ; Main: WAIT 8
|
|
|
|
LDWI _playSndCardFlip
|
|
CALL giga_vAC ; Main: gosub playSndCardFlip
|
|
|
|
LDI 63
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 63
|
|
|
|
LDI 128
|
|
STW drawRectF_x1
|
|
LDI 61
|
|
STW drawRectF_y1
|
|
STLW 0xFE
|
|
LDWI _page_0x39a0
|
|
CALL giga_vAC
|
|
_page_0x39a0 LDLW 0xFE
|
|
LDI 155
|
|
STW drawRectF_x2
|
|
LDI 106
|
|
STW drawRectF_y2
|
|
DrawRectF ; Main: rectf 128, cardY, 155, cardY2
|
|
|
|
LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 2
|
|
CALL convertEqOpAddr
|
|
STW 0xea
|
|
LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
ORW 0xea
|
|
JumpFalse _else_0x1a9c 88 ; Main: if (cardSuit(hand(4)) = HEARTS) OR (cardSuit(hand(4)) = DIAMONDS)
|
|
|
|
LDI 3
|
|
ST fgbgColour + 1
|
|
LDWI _endif_0x1aa0
|
|
CALL giga_vAC ; Main: set FG_COLOUR, 3
|
|
|
|
_else_0x1a9c LDI 0
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 0
|
|
|
|
_endif_0x1aa0 LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 14
|
|
STLW 0xFE
|
|
LDWI _page_0x3aa0
|
|
CALL giga_vAC
|
|
_page_0x3aa0 LDLW 0xFE
|
|
JumpEQ _elseif_0x1ae3 90 ; Main: if cardValue(hand(4)) &= 14
|
|
|
|
LDI 131
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7da2
|
|
NewLine
|
|
LDWI _endif_0x1bd9
|
|
CALL giga_vAC ; Main: at 131,cardValueY : print "A"
|
|
|
|
_elseif_0x1ae3 LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 13
|
|
JumpEQ _elseif_0x1b26 91 ; Main: elseif cardValue(hand(4)) &= 13
|
|
|
|
LDI 131
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7ca2
|
|
STLW 0xFE
|
|
LDWI _page_0x3ba0
|
|
CALL giga_vAC
|
|
_page_0x3ba0 LDLW 0xFE
|
|
NewLine
|
|
LDWI _endif_0x1bd9
|
|
CALL giga_vAC ; Main: at 131,cardValueY : print "K"
|
|
|
|
_elseif_0x1b26 LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 12
|
|
JumpEQ _elseif_0x1b69 92 ; Main: elseif cardValue(hand(4)) &= 12
|
|
|
|
LDI 131
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7ba2
|
|
NewLine
|
|
LDWI _endif_0x1bd9
|
|
CALL giga_vAC ; Main: at 131,cardValueY : print "Q"
|
|
|
|
_elseif_0x1b69 LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORI 11
|
|
STLW 0xFE
|
|
LDWI _page_0x3ca0
|
|
CALL giga_vAC
|
|
_page_0x3ca0 LDLW 0xFE
|
|
JumpEQ _else_0x1bac 93 ; Main: elseif cardValue(hand(4)) &= 11
|
|
|
|
LDI 131
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
PrintString _str_0x7aa2
|
|
NewLine
|
|
LDWI _endif_0x1bd9
|
|
CALL giga_vAC ; Main: at 131,cardValueY : print "J"
|
|
|
|
_else_0x1bac LDI 131
|
|
ST cursorXY
|
|
LDI 63
|
|
ST cursorXY + 1
|
|
AtTextCursor
|
|
LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
PrintAcInt16
|
|
NewLine ; Main: at 131,cardValueY : print cardValue(hand(4))
|
|
|
|
_endif_0x1bd9 LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
STLW 0xFE
|
|
LDWI _page_0x3da0
|
|
CALL giga_vAC
|
|
_page_0x3da0 LDLW 0xFE
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW spriteId
|
|
LDI 135
|
|
ST spriteXY
|
|
LDI 78
|
|
ADDI 8
|
|
ST spriteXY + 1
|
|
DrawSprite ; Main: sprite noFlip, cardSuit(hand(4)), 135, cardSuitY
|
|
|
|
_endif_0x1bfe Return ; Main: return
|
|
|
|
_sortCards PUSH
|
|
LDI 0
|
|
STW _i ; Main: for i = 0 to 3
|
|
|
|
_next_0x1c05 LDI 1
|
|
ADDW _i
|
|
STW 0xe8
|
|
LDI 1
|
|
ADDW _i
|
|
STW _j ; Main: for j = (1 + i) to 4
|
|
|
|
_next_0x1c15 LDWI 0x71c5
|
|
ADDW _i
|
|
PEEK
|
|
STW _tempValue1 ; Main: tempValue1 = hand(i)
|
|
|
|
LDWI 0x71c5
|
|
ADDW _j
|
|
PEEK
|
|
STW _tempValue2 ; Main: tempValue2 = hand(j)
|
|
|
|
LDWI 0x71cb
|
|
ADDW _tempValue1
|
|
PEEK
|
|
STW 0xe8
|
|
LDWI 0x71cb
|
|
ADDW _tempValue2
|
|
PEEK
|
|
STW 0xea
|
|
LDW 0xe8
|
|
SUBW 0xea
|
|
JumpGT _endif_0x1c97 96 ; Main: if cardValue(tempValue1) &> cardValue(tempValue2)
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x3ea0
|
|
CALL giga_vAC
|
|
_page_0x3ea0 LDLW 0xFE
|
|
LDWI 0x71c5
|
|
ADDW _i
|
|
PEEK
|
|
STW _tempCard ; Main: tempCard = hand(i)
|
|
|
|
LDWI 0x71c5
|
|
ADDW _j
|
|
PEEK
|
|
STW memValue
|
|
LDWI 0x71c5
|
|
ADDW _i
|
|
STW memAddr
|
|
LDW memValue
|
|
POKE memAddr ; Main: hand(i) = hand(j)
|
|
|
|
LDWI 0x71c5
|
|
ADDW _j
|
|
STW memAddr
|
|
LDW _tempCard
|
|
POKE memAddr ; Main: hand(j) = tempCard
|
|
|
|
_endif_0x1c97 ForNextFarInc _j _next_0x1c15 4 ; Main: next j
|
|
|
|
ForNextFarInc _i _next_0x1c05 3 ; Main: next i
|
|
|
|
Return ; Main: return
|
|
|
|
_checkHand PUSH
|
|
LDI 0
|
|
STW _straightFlag ; Main: straightFlag = 0
|
|
|
|
LDI 0
|
|
STW _flushFlag ; Main: flushFlag = 0
|
|
|
|
LDI 0
|
|
STW _winType ; Main: winType = NONE
|
|
|
|
LDI 31
|
|
ST fgbgColour + 1 ; Main: set FG_COLOUR, 31
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x3fa0
|
|
CALL giga_vAC
|
|
_page_0x3fa0 LDLW 0xFE
|
|
LDI 32
|
|
ST fgbgColour ; Main: set BG_COLOUR, 32
|
|
|
|
LDWI _sortCards
|
|
CALL giga_vAC ; Main: gosub sortCards
|
|
|
|
LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW _card0 ; Main: card0 = cardValue(hand(0))
|
|
|
|
LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW _card1 ; Main: card1 = cardValue(hand(1))
|
|
|
|
LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW _card2 ; Main: card2 = cardValue(hand(2))
|
|
|
|
LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW _card3 ; Main: card3 = cardValue(hand(3))
|
|
|
|
LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x71cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW _card4 ; Main: card4 = cardValue(hand(4))
|
|
|
|
LDWI _flush
|
|
CALL giga_vAC ; Main: gosub flush
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x40a0
|
|
CALL giga_vAC
|
|
_page_0x40a0 LDLW 0xFE
|
|
LDWI _straight
|
|
CALL giga_vAC ; Main: gosub straight
|
|
|
|
LDWI _royalFlush
|
|
CALL giga_vAC ; Main: gosub royalFlush
|
|
|
|
LDW _winType
|
|
XORI 10
|
|
JumpEQ _endif_0x1d65 97 ; Main: if winType &= ROYALFLUSH
|
|
|
|
LDI 250
|
|
STW mathX
|
|
LDW _betAmount
|
|
STW mathY
|
|
LDWI multiply16bit
|
|
CALL giga_vAC
|
|
STW _winAmount ; Main: winAmount = 250 * betAmount
|
|
|
|
Return ; Main: return
|
|
|
|
_endif_0x1d65 LDWI _straightFlush
|
|
CALL giga_vAC ; Main: gosub straightFlush
|
|
|
|
LDW _winType
|
|
XORI 9
|
|
JumpEQ _endif_0x1d8d 98 ; Main: if winType &= STRAIGHTFLUSH
|
|
|
|
LDI 50
|
|
STW mathX
|
|
LDW _betAmount
|
|
STW mathY
|
|
LDWI multiply16bit
|
|
CALL giga_vAC
|
|
STW _winAmount ; Main: winAmount = 50 * betAmount
|
|
|
|
Return ; Main: return
|
|
|
|
_endif_0x1d8d LDWI _fourOfAKind
|
|
CALL giga_vAC ; Main: gosub fourOfAKind
|
|
|
|
LDW _winType
|
|
XORI 7
|
|
STLW 0xFE
|
|
LDWI _page_0x41a0
|
|
CALL giga_vAC
|
|
_page_0x41a0 LDLW 0xFE
|
|
JumpEQ _endif_0x1db5 99 ; Main: if winType &= FOUROFAKIND
|
|
|
|
LDI 25
|
|
STW mathX
|
|
LDW _betAmount
|
|
STW mathY
|
|
LDWI multiply16bit
|
|
CALL giga_vAC
|
|
STW _winAmount ; Main: winAmount = 25 * betAmount
|
|
|
|
Return ; Main: return
|
|
|
|
_endif_0x1db5 LDWI _fullHouse
|
|
CALL giga_vAC ; Main: gosub fullHouse
|
|
|
|
LDW _winType
|
|
XORI 6
|
|
JumpEQ _endif_0x1ddd 100 ; Main: if winType &= FULLHOUSE
|
|
|
|
LDI 9
|
|
STW mathX
|
|
LDW _betAmount
|
|
STW mathY
|
|
LDWI multiply16bit
|
|
CALL giga_vAC
|
|
STW _winAmount ; Main: winAmount = 9 * betAmount
|
|
|
|
Return ; Main: return
|
|
|
|
_endif_0x1ddd LDW _flushFlag
|
|
XORI 1
|
|
JumpEQ _endif_0x1e04 101 ; Main: if flushFlag &= 1
|
|
|
|
LDI 5
|
|
STW _winType ; Main: winType = FLUSH
|
|
|
|
LDI 6
|
|
STW mathX
|
|
LDW _betAmount
|
|
STW mathY
|
|
LDWI multiply16bit
|
|
STLW 0xFE
|
|
LDWI _page_0x42a0
|
|
CALL giga_vAC
|
|
_page_0x42a0 LDLW 0xFE
|
|
CALL giga_vAC
|
|
STW _winAmount ; Main: winAmount = 6 * betAmount
|
|
|
|
Return ; Main: return
|
|
|
|
_endif_0x1e04 LDW _straightFlag
|
|
XORI 1
|
|
JumpEQ _endif_0x1e2b 102 ; Main: if straightFlag &= 1
|
|
|
|
LDI 4
|
|
STW _winType ; Main: winType = STRAIGHT
|
|
|
|
LDI 4
|
|
STW mathX
|
|
LDW _betAmount
|
|
STW mathY
|
|
LDWI multiply16bit
|
|
CALL giga_vAC
|
|
STW _winAmount ; Main: winAmount = 4 * betAmount
|
|
|
|
Return ; Main: return
|
|
|
|
_endif_0x1e2b LDWI _threeOfAKind
|
|
CALL giga_vAC ; Main: gosub threeOfAKind
|
|
|
|
LDW _winType
|
|
XORI 3
|
|
JumpEQ _endif_0x1e53 103 ; Main: if winType &= THREEOFAKIND
|
|
|
|
LDI 3
|
|
STW mathX
|
|
LDW _betAmount
|
|
STW mathY
|
|
LDWI multiply16bit
|
|
CALL giga_vAC
|
|
STW _winAmount ; Main: winAmount = 3 * betAmount
|
|
|
|
Return ; Main: return
|
|
|
|
_endif_0x1e53 LDWI _twoPair
|
|
CALL giga_vAC ; Main: gosub twoPair
|
|
|
|
LDW _winType
|
|
XORI 2
|
|
STLW 0xFE
|
|
LDWI _page_0x43a0
|
|
CALL giga_vAC
|
|
_page_0x43a0 LDLW 0xFE
|
|
JumpEQ _endif_0x1e7b 104 ; Main: if winType &= TWOPAIR
|
|
|
|
LDI 2
|
|
STW mathX
|
|
LDW _betAmount
|
|
STW mathY
|
|
LDWI multiply16bit
|
|
CALL giga_vAC
|
|
STW _winAmount ; Main: winAmount = 2 * betAmount
|
|
|
|
Return ; Main: return
|
|
|
|
_endif_0x1e7b LDWI _jacksOrBetter
|
|
CALL giga_vAC ; Main: gosub jacksOrBetter
|
|
|
|
LDW _winType
|
|
XORI 1
|
|
JumpEQ _endif_0x1e96 105 ; Main: if winType &= JACKSORBETTER
|
|
|
|
LDW _betAmount
|
|
STW _winAmount ; Main: winAmount = betAmount
|
|
|
|
Return ; Main: return
|
|
|
|
_endif_0x1e96 Return ; Main: return
|
|
|
|
_jacksOrBetter PUSH
|
|
LDI 0
|
|
STW _i ; Main: for i = 0 to 4
|
|
|
|
_next_0x1e9d LDWI 0x71c5
|
|
ADDW _i
|
|
PEEK
|
|
STW _tempValue1 ; Main: tempValue1 = hand(i)
|
|
|
|
LDW _i
|
|
ADDI 1
|
|
STW memIndex0
|
|
LDWI 0x71c5
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW _tempValue2 ; Main: tempValue2 = hand(i+1)
|
|
|
|
LDWI 0x71cb
|
|
ADDW _tempValue1
|
|
PEEK
|
|
STW 0xe8
|
|
STLW 0xFE
|
|
LDWI _page_0x44a0
|
|
CALL giga_vAC
|
|
_page_0x44a0 LDLW 0xFE
|
|
LDWI 0x71cb
|
|
ADDW _tempValue2
|
|
PEEK
|
|
XORW 0xe8
|
|
CALL convertEqOpAddr
|
|
STW 0xea
|
|
LDWI 0x71cb
|
|
ADDW _tempValue2
|
|
PEEK
|
|
SUBI 10
|
|
CALL convertGtOpAddr
|
|
ANDW 0xea
|
|
JumpFalse _endif_0x1f07 106 ; Main: if (cardValue(tempValue1) = cardValue(tempValue2)) AND (cardValue(tempValue2) > 10)
|
|
|
|
LDI 1
|
|
STW _winType ; Main: winType = JACKSORBETTER
|
|
|
|
_endif_0x1f07 ForNextFarInc _i _next_0x1e9d 4 ; Main: next i
|
|
|
|
Return ; Main: return
|
|
|
|
_twoPair PUSH
|
|
LDW _card0
|
|
XORW _card1
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _card2
|
|
XORW _card3
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
JumpFalse _elseif_0x1f41 107 ; Main: if (card0 = card1) AND (card2 = card3)
|
|
|
|
LDI 2
|
|
STW _winType
|
|
LDWI _endif_0x1f8e
|
|
CALL giga_vAC ; Main: winType = TWOPAIR
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x45a0
|
|
CALL giga_vAC
|
|
_page_0x45a0 LDLW 0xFE
|
|
_elseif_0x1f41 LDW _card1
|
|
XORW _card2
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _card3
|
|
XORW _card4
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
JumpFalse _elseif_0x1f6a 108 ; Main: elseif (card1 = card2) AND (card3 = card4)
|
|
|
|
LDI 2
|
|
STW _winType
|
|
LDWI _endif_0x1f8e
|
|
CALL giga_vAC ; Main: winType = TWOPAIR
|
|
|
|
_elseif_0x1f6a LDW _card0
|
|
XORW _card1
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _card3
|
|
XORW _card4
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
JumpFalse _endif_0x1f8e 109 ; Main: elseif (card0 = card1) AND (card3 = card4)
|
|
|
|
LDI 2
|
|
STW _winType ; Main: winType = TWOPAIR
|
|
|
|
_endif_0x1f8e Return ; Main: return
|
|
|
|
_threeOfAKind PUSH
|
|
LDI 0
|
|
STW _i ; Main: for i = 0 to 2
|
|
|
|
_next_0x1f95 LDWI 0x71c5
|
|
ADDW _i
|
|
PEEK
|
|
STW _tempValue1 ; Main: tempValue1 = hand(i)
|
|
|
|
LDW _i
|
|
ADDI 1
|
|
STW memIndex0
|
|
LDWI 0x71c5
|
|
STLW 0xFE
|
|
LDWI _page_0x46a0
|
|
CALL giga_vAC
|
|
_page_0x46a0 LDLW 0xFE
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW _tempValue2 ; Main: tempValue2 = hand(i+1)
|
|
|
|
LDW _i
|
|
ADDI 2
|
|
STW memIndex0
|
|
LDWI 0x71c5
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW _tempValue3 ; Main: tempValue3 = hand(i+2)
|
|
|
|
LDWI 0x71cb
|
|
ADDW _tempValue1
|
|
PEEK
|
|
STW 0xe8
|
|
LDWI 0x71cb
|
|
ADDW _tempValue2
|
|
PEEK
|
|
XORW 0xe8
|
|
CALL convertEqOpAddr
|
|
STW 0xea
|
|
LDWI 0x71cb
|
|
ADDW _tempValue2
|
|
PEEK
|
|
STW 0xec
|
|
LDWI 0x71cb
|
|
ADDW _tempValue3
|
|
PEEK
|
|
XORW 0xec
|
|
CALL convertEqOpAddr
|
|
ANDW 0xea
|
|
JumpFalse _endif_0x201f 110 ; Main: if (cardValue(tempValue1) = cardValue(tempValue2)) AND (cardValue(tempValue2) = cardValue(tempValue3))
|
|
|
|
LDI 3
|
|
STW _winType ; Main: winType = THREEOFAKIND
|
|
|
|
_endif_0x201f ForNextFarInc _i _next_0x1f95 2 ; Main: next i
|
|
|
|
STLW 0xFE
|
|
LDWI _page_0x47a0
|
|
CALL giga_vAC
|
|
_page_0x47a0 LDLW 0xFE
|
|
Return ; Main: return
|
|
|
|
_straight PUSH
|
|
LDW _card3
|
|
ADDI 1
|
|
XORW _card4
|
|
CALL convertEqOpAddr
|
|
STW 0xea
|
|
LDW _card3
|
|
ADDI 1
|
|
STW 0xec
|
|
LDW _card2
|
|
ADDI 2
|
|
XORW 0xec
|
|
CALL convertEqOpAddr
|
|
ANDW 0xea
|
|
STW 0xee
|
|
LDW _card2
|
|
ADDI 2
|
|
STW 0xe8
|
|
LDW _card1
|
|
ADDI 3
|
|
XORW 0xe8
|
|
CALL convertEqOpAddr
|
|
ANDW 0xee
|
|
STW 0xea
|
|
LDW _card1
|
|
ADDI 3
|
|
STW 0xec
|
|
LDW _card0
|
|
ADDI 4
|
|
XORW 0xec
|
|
CALL convertEqOpAddr
|
|
ANDW 0xea
|
|
JumpFalse _elseif_0x209f 111 ; Main: if (card4 = card3+1) AND (card3+1 = card2+2) AND (card2+2 = card1+3) AND (card1+3 = card0+4)
|
|
|
|
LDI 1
|
|
STW _straightFlag
|
|
LDWI _endif_0x20ed
|
|
CALL giga_vAC ; Main: straightFlag = 1
|
|
|
|
_elseif_0x209f LDW _card4
|
|
XORI 14
|
|
STLW 0xFE
|
|
LDWI _page_0x48a0
|
|
CALL giga_vAC
|
|
_page_0x48a0 LDLW 0xFE
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _card0
|
|
XORI 2
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
STW 0xea
|
|
LDW _card1
|
|
XORI 3
|
|
CALL convertEqOpAddr
|
|
ANDW 0xea
|
|
STW 0xec
|
|
LDW _card2
|
|
XORI 4
|
|
CALL convertEqOpAddr
|
|
ANDW 0xec
|
|
STW 0xee
|
|
LDW _card3
|
|
XORI 5
|
|
CALL convertEqOpAddr
|
|
ANDW 0xee
|
|
JumpFalse _endif_0x20ed 112 ; Main: elseif (card4 = ACE) AND (card0 = 2) AND (card1 = 3) AND (card2 = 4) AND (card3 = 5)
|
|
|
|
LDI 1
|
|
STW _straightFlag ; Main: straightFlag = 1
|
|
|
|
_endif_0x20ed Return ; Main: return
|
|
|
|
_flush PUSH
|
|
LDWI 0x71c5
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW 0xea
|
|
LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORW 0xea
|
|
STLW 0xFE
|
|
LDWI _page_0x49a0
|
|
CALL giga_vAC
|
|
_page_0x49a0 LDLW 0xFE
|
|
CALL convertEqOpAddr
|
|
STW 0xee
|
|
LDWI 0x71c6
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW 0xea
|
|
LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORW 0xea
|
|
CALL convertEqOpAddr
|
|
ANDW 0xee
|
|
STW 0xee
|
|
LDWI 0x71c7
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW 0xea
|
|
LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORW 0xea
|
|
CALL convertEqOpAddr
|
|
ANDW 0xee
|
|
STW 0xee
|
|
LDWI 0x71c8
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
STW 0xea
|
|
STLW 0xFE
|
|
LDWI _page_0x4aa0
|
|
CALL giga_vAC
|
|
_page_0x4aa0 LDLW 0xFE
|
|
LDWI 0x71c9
|
|
PEEK
|
|
STW memIndex0
|
|
LDWI 0x70cb
|
|
ADDW memIndex0
|
|
PEEK
|
|
XORW 0xea
|
|
CALL convertEqOpAddr
|
|
ANDW 0xee
|
|
JumpFalse _endif_0x21c0 113 ; Main: if (cardSuit(hand(0)) = cardSuit(hand(1))) AND (cardSuit(hand(1)) = cardSuit(hand(2))) AND (cardSuit(hand(2)) = cardSuit(hand(3))) AND (cardSuit(hand(3)) = cardSuit(hand(4)))
|
|
|
|
LDI 1
|
|
STW _flushFlag ; Main: flushFlag = 1
|
|
|
|
_endif_0x21c0 Return ; Main: return
|
|
|
|
_fullHouse PUSH
|
|
LDW _card0
|
|
XORW _card1
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _card1
|
|
XORW _card2
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
STW 0xea
|
|
LDW _card3
|
|
XORW _card4
|
|
CALL convertEqOpAddr
|
|
ANDW 0xea
|
|
JumpFalse _elseif_0x21fa 114 ; Main: if (card0 = card1) AND (card1 = card2) AND (card3 = card4)
|
|
|
|
LDI 6
|
|
STW _winType
|
|
LDWI _endif_0x222c
|
|
CALL giga_vAC ; Main: winType = FULLHOUSE
|
|
|
|
_elseif_0x21fa LDW _card0
|
|
XORW _card1
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _card2
|
|
STLW 0xFE
|
|
LDWI _page_0x4ba0
|
|
CALL giga_vAC
|
|
_page_0x4ba0 LDLW 0xFE
|
|
XORW _card3
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
STW 0xea
|
|
LDW _card3
|
|
XORW _card4
|
|
CALL convertEqOpAddr
|
|
ANDW 0xea
|
|
JumpFalse _endif_0x222c 115 ; Main: elseif (card0 = card1) AND (card2 = card3) AND (card3 = card4)
|
|
|
|
LDI 6
|
|
STW _winType ; Main: winType = FULLHOUSE
|
|
|
|
_endif_0x222c Return ; Main: return
|
|
|
|
_fourOfAKind PUSH
|
|
LDW _card0
|
|
XORW _card1
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _card1
|
|
XORW _card2
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
STW 0xea
|
|
LDW _card2
|
|
XORW _card3
|
|
CALL convertEqOpAddr
|
|
ANDW 0xea
|
|
JumpFalse _elseif_0x2266 116 ; Main: if (card0 = card1) AND (card1 = card2) AND (card2 = card3)
|
|
|
|
LDI 7
|
|
STW _winType
|
|
LDWI _endif_0x2298
|
|
CALL giga_vAC ; Main: winType = FOUROFAKIND
|
|
|
|
_elseif_0x2266 LDW _card1
|
|
XORW _card2
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _card2
|
|
XORW _card3
|
|
STLW 0xFE
|
|
LDWI _page_0x4ca0
|
|
CALL giga_vAC
|
|
_page_0x4ca0 LDLW 0xFE
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
STW 0xea
|
|
LDW _card3
|
|
XORW _card4
|
|
CALL convertEqOpAddr
|
|
ANDW 0xea
|
|
JumpFalse _endif_0x2298 117 ; Main: elseif (card1 = card2) AND (card2 = card3) AND (card3 = card4)
|
|
|
|
LDI 7
|
|
STW _winType ; Main: winType = FOUROFAKIND
|
|
|
|
_endif_0x2298 Return ; Main: return
|
|
|
|
_straightFlush PUSH
|
|
LDW _straightFlag
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _flushFlag
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
JumpFalse _endif_0x22bf 118 ; Main: if (straightFlag = 1) AND (flushFlag = 1)
|
|
|
|
LDI 9
|
|
STW _winType ; Main: winType = STRAIGHTFLUSH
|
|
|
|
_endif_0x22bf Return ; Main: return
|
|
|
|
_royalFlush PUSH
|
|
LDW _flushFlag
|
|
XORI 1
|
|
CALL convertEqOpAddr
|
|
STW 0xe8
|
|
LDW _card0
|
|
XORI 10
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
STW 0xea
|
|
LDW _card1
|
|
XORI 11
|
|
CALL convertEqOpAddr
|
|
ANDW 0xea
|
|
STLW 0xFE
|
|
LDWI _page_0x4da0
|
|
CALL giga_vAC
|
|
_page_0x4da0 LDLW 0xFE
|
|
STW 0xec
|
|
LDW _card2
|
|
XORI 12
|
|
CALL convertEqOpAddr
|
|
ANDW 0xec
|
|
STW 0xee
|
|
LDW _card3
|
|
XORI 13
|
|
CALL convertEqOpAddr
|
|
ANDW 0xee
|
|
STW 0xe8
|
|
LDW _card4
|
|
XORI 14
|
|
CALL convertEqOpAddr
|
|
ANDW 0xe8
|
|
JumpFalse _endif_0x231e 119 ; Main: if (flushFlag = 1) AND (card0 = 10) AND (card1 = JACK) AND (card2 = QUEEN) AND (card3 = KING) AND (card4 = ACE)
|
|
|
|
LDI 10
|
|
STW _winType ; Main: winType = ROYALFLUSH
|
|
|
|
_endif_0x231e Return ; Main: return
|
|
|
|
HALT ; Main: END
|
|
|
|
|
|
|
|
;****************************************************************************************************************************************
|
|
;****************************************************************************************************************************************
|
|
;* Internal runtime, DO NOT MODIFY PAST THIS POINT, modifications must be made in the original include files *
|
|
;****************************************************************************************************************************************
|
|
;****************************************************************************************************************************************
|
|
|
|
romCheck EQU 0x63a1
|
|
convertEqOp EQU 0x61bc
|
|
convertGtOp EQU 0x61b3
|
|
multiply16bit EQU 0x65cb
|
|
divide16bit EQU 0x69a8
|
|
randMod16bit EQU 0x62ac
|
|
scanlineMode EQU 0x61c5
|
|
waitVBlank EQU 0x62a0
|
|
waitVBlanks EQU 0x61ec
|
|
resetVideoFlags EQU 0x61cf
|
|
initClearFuncs EQU 0x61db
|
|
clearVertBlinds EQU 0x66c9
|
|
clearCursorRow EQU 0x64cf
|
|
drawHLine EQU 0x64a2
|
|
drawVLine EQU 0x6ba1
|
|
drawRect EQU 0x67c0
|
|
drawRectF EQU 0x66a1
|
|
drawSprite_ EQU 0x65a3
|
|
drawSprite EQU 0x68a1
|
|
soundAllOff EQU 0x62e9
|
|
soundOn EQU 0x62bf
|
|
printInit EQU 0x62d3
|
|
printText EQU 0x67a7
|
|
printDigit EQU 0x63b8
|
|
printInt16 EQU 0x68ae
|
|
printChar EQU 0x6ca0
|
|
atTextCursor EQU 0x63da
|
|
newLineScroll EQU 0x6aa2
|
|
convertEqOpAddr EQU 0x00c0
|
|
convertNeOpAddr EQU 0x00c2
|
|
convertLeOpAddr EQU 0x00c4
|
|
convertGeOpAddr EQU 0x00c6
|
|
convertLtOpAddr EQU 0x00c8
|
|
convertGtOpAddr EQU 0x00ca
|
|
convert8Arr2dAddr EQU 0x00cc
|
|
convert8Arr3dAddr EQU 0x00ce
|
|
convert16Arr2dAddr EQU 0x00d0
|
|
convert16Arr3dAddr EQU 0x00d2
|
|
realTimeStubAddr EQU 0x00d4
|
|
|
|
|
|
; do *NOT* use register4 to register7 during time slicing
|
|
realTimeAddr EQU register0
|
|
realTimeProc0 EQU register1
|
|
realTimeProc1 EQU register2
|
|
realTimeProc2 EQU register3
|
|
numericLabel EQU register0
|
|
defaultLabel EQU register1
|
|
lutLabs EQU register2
|
|
lutAddrs EQU register3
|
|
lutIndex EQU register8
|
|
romType EQU register0
|
|
romErrAddr EQU register1
|
|
romErrPixel EQU register2
|
|
|
|
|
|
romCheck LD giga_romType
|
|
ANDI 0xFC
|
|
SUBW romType
|
|
BGE romC_return
|
|
LDWI giga_vram
|
|
STW romErrAddr
|
|
|
|
romC_loop LD romErrPixel
|
|
POKE romErrAddr
|
|
INC romErrPixel
|
|
BRA romC_loop ; flash left hand corner pixel indicating rom error
|
|
|
|
romC_return RET
|
|
|
|
|
|
; convert equal to into a boolean
|
|
convertEqOp BEQ convertEq_1
|
|
LDI 0
|
|
RET
|
|
convertEq_1 LDI 1
|
|
RET
|
|
|
|
|
|
; convert greater than into boolean
|
|
convertGtOp BGT convertGt_1
|
|
LDI 0
|
|
RET
|
|
convertGt_1 LDI 1
|
|
RET
|
|
|
|
|
|
; do *NOT* use register4 to register7 during time slicing
|
|
mathX EQU register8
|
|
mathY EQU register9
|
|
mathSum EQU register12
|
|
mathRem EQU register12
|
|
mathMask EQU register13
|
|
mathSign EQU register14
|
|
mathQuot EQU register15
|
|
mathShift EQU register15
|
|
mathBase EQU register10
|
|
mathPow EQU register11
|
|
mathResult EQU register14
|
|
|
|
|
|
; accumulator = mathX * mathY, (result 16bit)
|
|
multiply16bit LDI 0
|
|
STW mathSum
|
|
LDW mathX
|
|
BEQ multiply16_exit ; if x=0 then return 0
|
|
LDWI SYS_LSRW1_48
|
|
STW giga_sysFn
|
|
LDW mathY
|
|
|
|
multiply16_loop BEQ multiply16_exit ; if y=0 then return
|
|
ANDI 1
|
|
BEQ multiply16_skip
|
|
LDW mathSum
|
|
ADDW mathX
|
|
STW mathSum ; mathSum += mathX
|
|
|
|
multiply16_skip LDW mathX
|
|
LSLW
|
|
STW mathX ; mathX = mathX <<1
|
|
LDW mathY
|
|
SYS 48
|
|
STW mathY ; mathY = mathY >>1
|
|
BRA multiply16_loop
|
|
|
|
%if TIME_SLICING
|
|
multiply16_exit PUSH
|
|
CALL realTimeStubAddr
|
|
POP
|
|
LDW mathSum
|
|
%else
|
|
multiply16_exit LDW mathSum
|
|
%endif
|
|
RET
|
|
|
|
|
|
; accumulator:mathRem = mathX / mathY, (results 16bit)
|
|
divide16bit LDW mathX
|
|
XORW mathY
|
|
STW mathSign
|
|
LDW mathX
|
|
BGE divide16_pos0
|
|
LDI 0
|
|
SUBW mathX
|
|
STW mathX
|
|
|
|
divide16_pos0 LDW mathY
|
|
BGE divide16_pos1
|
|
LDI 0
|
|
SUBW mathY
|
|
STW mathY
|
|
|
|
divide16_pos1 LDI 0
|
|
STW mathRem
|
|
LDI 1
|
|
|
|
divide16_loop STW mathMask
|
|
LDW mathRem
|
|
LSLW
|
|
STW mathRem
|
|
LDW mathX
|
|
BGE divide16_incr
|
|
INC mathRem
|
|
|
|
divide16_incr LDW mathX
|
|
LSLW
|
|
STW mathX
|
|
LDW mathRem
|
|
SUBW mathY
|
|
BLT divide16_incx
|
|
STW mathRem
|
|
INC mathX
|
|
|
|
divide16_incx LDW mathMask
|
|
LSLW
|
|
BNE divide16_loop
|
|
%if TIME_SLICING
|
|
PUSH
|
|
CALL realTimeStubAddr
|
|
POP
|
|
%endif
|
|
LDW mathSign
|
|
BGE divide16_exit
|
|
LDI 0
|
|
SUBW mathX
|
|
RET
|
|
|
|
divide16_exit LDW mathX
|
|
RET
|
|
|
|
|
|
randMod16bit PUSH
|
|
LDWI SYS_Random_34
|
|
STW giga_sysFn
|
|
SYS 34
|
|
STW mathX
|
|
LDWI divide16bit
|
|
CALL giga_vAC
|
|
LDW mathRem
|
|
POP
|
|
RET
|
|
|
|
|
|
; do *NOT* use register4 to register7 during time slicing
|
|
graphicsMode EQU register0
|
|
waitVBlankNum EQU register0
|
|
|
|
drawHLine_x1 EQU register0
|
|
drawHLine_y1 EQU register1
|
|
drawHLine_x2 EQU register2
|
|
drawHLine_x4 EQU register3
|
|
|
|
drawVLine_x1 EQU register0
|
|
drawVLine_y1 EQU register1
|
|
drawVLine_y2 EQU register2
|
|
drawVLine_y8 EQU register3
|
|
|
|
drawLine_x1 EQU register0
|
|
drawLine_y1 EQU register1
|
|
drawLine_x2 EQU register2
|
|
drawLine_y2 EQU register3
|
|
drawLine_xy1 EQU register0
|
|
drawLine_xy2 EQU register1
|
|
drawLine_dxy1 EQU register2
|
|
drawLine_dxy2 EQU register3
|
|
drawLine_dx1 EQU register4 ; register4 to register7 used for temp values, state will be invalidated during time slicing
|
|
drawLine_dy1 EQU register5
|
|
drawLine_dx2 EQU register6
|
|
drawLine_dy2 EQU register7
|
|
drawLine_sx EQU register8
|
|
drawLine_sy EQU register9
|
|
drawLine_h EQU register10
|
|
drawLine_num EQU register11
|
|
drawLine_count EQU register12
|
|
drawLine_tmp EQU register13
|
|
drawLine_dx EQU register2
|
|
drawLine_dy EQU register3
|
|
drawLine_u EQU register8
|
|
drawLine_v EQU register9
|
|
drawLine_addr EQU register10
|
|
|
|
drawPixel_xy EQU register15
|
|
readPixel_xy EQU register15
|
|
|
|
drawCircle_cx EQU register0
|
|
drawCircle_cy EQU register1
|
|
drawCircle_r EQU register2
|
|
drawCircle_a EQU register3
|
|
drawCircle_d EQU register8
|
|
drawCircle_x EQU register9
|
|
drawCircle_y EQU register10
|
|
drawCircle_ch0 EQU register11
|
|
drawCircle_ch1 EQU register12
|
|
drawCircle_ch2 EQU register13
|
|
drawCircle_ch3 EQU register14
|
|
|
|
drawCircleF_x1 EQU register0
|
|
drawCircleF_y1 EQU register1
|
|
drawCircleF_x2 EQU register2
|
|
drawCircleF_cx EQU register15
|
|
drawCircleF_cy EQU register10
|
|
drawCircleF_r EQU register11
|
|
drawCircleF_v EQU register8
|
|
drawCircleF_w EQU register9
|
|
|
|
drawRect_x1 EQU register7
|
|
drawRect_y1 EQU register10
|
|
drawRect_x2 EQU register11
|
|
drawRect_y2 EQU register15
|
|
|
|
drawRectF_x1 EQU register0
|
|
drawRectF_y1 EQU register1
|
|
drawRectF_x2 EQU register2
|
|
drawRectF_y2 EQU register7
|
|
|
|
drawPoly_mode EQU register14
|
|
drawPoly_addr EQU register15
|
|
|
|
|
|
scanlineMode LDWI SYS_SetMode_v2_80
|
|
STW giga_sysFn
|
|
LDW graphicsMode
|
|
SYS 80
|
|
RET
|
|
|
|
|
|
|
|
waitVBlank LD giga_videoY
|
|
XORI 179
|
|
BNE waitVBlank
|
|
%if TIME_SLICING
|
|
PUSH
|
|
CALL realTimeStubAddr
|
|
POP
|
|
%endif
|
|
RET
|
|
|
|
|
|
waitVBlanks PUSH
|
|
|
|
waitVB_loop LDW waitVBlankNum
|
|
SUBI 0x01
|
|
STW waitVBlankNum
|
|
BGE waitVB_vblank
|
|
POP
|
|
RET
|
|
|
|
waitVB_vblank LDWI waitVBlank
|
|
CALL giga_vAC
|
|
BRA waitVB_loop
|
|
|
|
|
|
; do *NOT* use register4 to register7 during time slicing
|
|
xreset EQU register0
|
|
xcount EQU register1
|
|
ycount EQU register2
|
|
treset EQU register3
|
|
breset EQU register8
|
|
top EQU register9
|
|
bot EQU register10
|
|
vramAddr EQU register11
|
|
evenAddr EQU register12
|
|
clsAddress EQU register13
|
|
clsLines EQU register14
|
|
varAddress EQU register13
|
|
clrAddress EQU register13
|
|
clrLines EQU register14
|
|
clrWidth EQU register15
|
|
|
|
|
|
resetVideoFlags LDI giga_CursorX ; cursor x start
|
|
STW cursorXY
|
|
LDWI ON_BOTTOM_ROW_MSK
|
|
ANDW miscFlags
|
|
STW miscFlags ; reset on bottom row flag
|
|
RET
|
|
|
|
|
|
|
|
initClearFuncs PUSH
|
|
LDWI resetVideoFlags
|
|
CALL giga_vAC
|
|
LDWI SYS_SetMemory_v2_54 ; setup fill memory SYS routine
|
|
STW giga_sysFn
|
|
LD fgbgColour
|
|
ST giga_sysArg1 ; fill value
|
|
POP
|
|
RET
|
|
|
|
|
|
; clears the viewable screen using a vertical blinds effect
|
|
clearVertBlinds PUSH
|
|
LDWI initClearFuncs
|
|
CALL giga_vAC
|
|
LDI giga_vram >> 8
|
|
STW top
|
|
|
|
clearVB_loopy LDI giga_xres
|
|
ST giga_sysArg0
|
|
LDI 0
|
|
ST giga_sysArg2 ; low start address
|
|
LD top
|
|
ST giga_sysArg3 ; top line
|
|
SYS 54 ; fill memory
|
|
|
|
LDI giga_xres
|
|
ST giga_sysArg0
|
|
LDI 0
|
|
ST giga_sysArg2 ; low start address
|
|
LDWI giga_yres - 1 + 16
|
|
SUBW top
|
|
ST giga_sysArg3 ; bottom line
|
|
SYS 54 ; fill memory
|
|
INC top ; next top line
|
|
%if TIME_SLICING
|
|
CALL realTimeStubAddr
|
|
%endif
|
|
LD top
|
|
SUBI giga_yres / 2 + 8
|
|
BLT clearVB_loopy
|
|
POP
|
|
RET
|
|
|
|
|
|
|
|
drawHLine PUSH
|
|
LD drawHLine_x1
|
|
ST giga_sysArg2 ; low start address
|
|
LD drawHLine_x2
|
|
SUBW drawHLine_x1
|
|
BGE drawHL_cont
|
|
LD drawHLine_x2
|
|
ST giga_sysArg2 ; low start address
|
|
LD drawHLine_x1
|
|
SUBW drawHLine_x2
|
|
|
|
drawHL_cont ADDI 1
|
|
ST giga_sysArg0 ; count
|
|
LD fgbgColour + 1
|
|
ST giga_sysArg1 ; fill value
|
|
LD drawHLine_y1
|
|
ADDI 8
|
|
ST giga_sysArg3 ; high start address
|
|
LDWI SYS_SetMemory_v2_54
|
|
STW giga_sysFn
|
|
SYS 54 ; fill memory
|
|
%if TIME_SLICING
|
|
CALL realTimeStubAddr
|
|
%endif
|
|
POP
|
|
RET
|
|
|
|
|
|
|
|
drawVLine PUSH
|
|
LDW drawVLine_y2
|
|
SUBW drawVLine_y1
|
|
BGE drawVL_cont
|
|
LDW drawVLine_y2
|
|
STW drawLine_tmp
|
|
LDW drawVLine_y1
|
|
STW drawVLine_y2
|
|
LDW drawLine_tmp
|
|
STW drawVLine_y1 ; if y2 < y1 then swap y2 with y1
|
|
|
|
drawVL_cont LD drawVLine_x1
|
|
ST giga_sysArg4
|
|
LD drawVLine_y1
|
|
ADDI 8
|
|
ST drawVLine_y1
|
|
ST giga_sysArg5
|
|
LDW drawVLine_y2
|
|
ADDI 8
|
|
ST drawVLine_y2
|
|
SUBW drawVLine_y1
|
|
SUBI 8
|
|
BLT drawVL_loop1
|
|
|
|
LDW fgbgColour
|
|
STW giga_sysArg0
|
|
LDWI SYS_VDrawBits_134
|
|
STW giga_sysFn ; setup 8 pixel SYS routine
|
|
|
|
LDW drawVLine_y2
|
|
SUBI 7
|
|
STW drawVLine_y8 ; 8 pixel chunks limit
|
|
|
|
drawVL_loop0 LDI 0xFF
|
|
ST giga_sysArg2 ; 8 pixels of fg and bg colour
|
|
SYS 134 ; SYS_VDrawBits_134, 270 - 134/2 = 0xCB
|
|
%if TIME_SLICING
|
|
CALL realTimeStubAddr
|
|
%endif
|
|
LD giga_sysArg5
|
|
ADDI 8
|
|
ST giga_sysArg5
|
|
SUBW drawVLine_y8
|
|
BLT drawVL_loop0 ; all 8 pixel chunks
|
|
|
|
drawVL_loop1 LD fgbgColour + 1
|
|
POKE giga_sysArg4
|
|
INC giga_sysArg5
|
|
LD giga_sysArg5
|
|
SUBW drawVLine_y2
|
|
BLE drawVL_loop1 ; remaining pixels
|
|
POP
|
|
RET
|
|
|
|
|
|
drawRect PUSH
|
|
LDW drawRect_x1
|
|
STW drawHLine_x1
|
|
LDW drawRect_y1
|
|
STW drawHLine_y1
|
|
LDW drawRect_x2
|
|
STW drawHLine_x2
|
|
LDWI drawHLine
|
|
CALL giga_vAC
|
|
LDW drawRect_y2
|
|
STW drawHLine_y1
|
|
LDWI drawHLine
|
|
CALL giga_vAC
|
|
|
|
LDW drawRect_x1
|
|
STW drawVLine_x1
|
|
LDW drawRect_y1
|
|
STW drawVLine_y1
|
|
LDW drawRect_y2
|
|
STW drawVLine_y2
|
|
LDWI drawVLine
|
|
CALL giga_vAC
|
|
LDW drawRect_x2
|
|
STW drawVLine_x1
|
|
LDW drawRect_y1
|
|
STW drawVLine_y1
|
|
LDW drawRect_y2
|
|
STW drawVLine_y2
|
|
LDWI drawVLine
|
|
CALL giga_vAC
|
|
|
|
POP
|
|
RET
|
|
|
|
|
|
drawRectF PUSH
|
|
LDW drawRectF_y2
|
|
SUBW drawRectF_y1
|
|
BGE drawRF_loop
|
|
LDW drawRectF_y2
|
|
STW drawLine_tmp
|
|
LDW drawRectF_y1
|
|
STW drawRectF_y2
|
|
LDW drawLine_tmp
|
|
STW drawRectF_y1 ;if y2 < y1 then swap y2 with y1
|
|
|
|
drawRF_loop LDW drawRectF_y1
|
|
STW drawHLine_y1
|
|
LDWI drawHLine
|
|
CALL giga_vAC
|
|
INC drawRectF_y1
|
|
LDW drawRectF_y1
|
|
SUBW drawRectF_y2
|
|
BLE drawRF_loop
|
|
|
|
POP
|
|
RET
|
|
|
|
|
|
|
|
; do *NOT* use register4 to register7 during time slicing
|
|
spriteId EQU register0
|
|
spriteXY EQU register1
|
|
spriteAddrs EQU register2
|
|
|
|
|
|
drawSprite_ PUSH
|
|
LDWI _spritesLut_
|
|
ADDW spriteId
|
|
ADDW spriteId
|
|
DEEK
|
|
STW spriteAddrs ; get sprite address table
|
|
|
|
drawS_loop LDW spriteAddrs
|
|
DEEK ; get source address
|
|
BEQ drawS_exit
|
|
STW giga_sysArg0
|
|
INC spriteAddrs
|
|
INC spriteAddrs
|
|
LDW spriteAddrs
|
|
DEEK ; get stripe destination offset
|
|
ADDW spriteXY
|
|
SYS 64
|
|
INC spriteAddrs
|
|
INC spriteAddrs
|
|
%if TIME_SLICING
|
|
CALL realTimeStubAddr
|
|
%endif
|
|
BRA drawS_loop
|
|
|
|
drawS_exit POP
|
|
RET
|
|
|
|
|
|
drawSprite PUSH
|
|
LDWI SYS_Sprite6_v3_64
|
|
STW giga_sysFn
|
|
LDWI drawSprite_
|
|
CALL giga_vAC
|
|
POP
|
|
RET
|
|
|
|
|
|
audioAddr EQU register1
|
|
waveType EQU register2
|
|
midiNote EQU register4 ; register4 to register7 are the only free registers during time slicing
|
|
midiCommand EQU register5
|
|
midiPtr EQU register6
|
|
sndChannel EQU register8
|
|
sndFrequency EQU register9
|
|
sndVolume EQU register10
|
|
sndWaveType EQU register11
|
|
musicStream EQU register8
|
|
musicNote EQU register9
|
|
musicCommand EQU register10
|
|
musicPtr EQU register11
|
|
|
|
|
|
soundAllOff LDWI 0x01FC
|
|
STW sndChannel
|
|
LDI 0
|
|
DOKE sndChannel ; turn off channel 0
|
|
INC sndChannel + 1
|
|
DOKE sndChannel ; turn off channel 1
|
|
INC sndChannel + 1
|
|
DOKE sndChannel ; turn off channel 2
|
|
INC sndChannel + 1
|
|
DOKE sndChannel ; turn off channel 3
|
|
RET
|
|
|
|
|
|
soundOn LDWI SYS_LSRW1_48
|
|
STW giga_sysFn
|
|
LDI 0xFC
|
|
ST sndChannel
|
|
LD sndFrequency
|
|
SYS 48
|
|
ST sndFrequency ; right shift low byte of sndFrequency by 1
|
|
LDW sndFrequency ; format = high:8 low:07, (bit 7 of low byte = 0)
|
|
DOKE sndChannel ; turn on channel
|
|
RET
|
|
|
|
|
|
|
|
; do *NOT* use register4 to register7 during time slicing
|
|
textStr EQU register0
|
|
textNum EQU register0
|
|
textBak EQU register0
|
|
textHex EQU register1
|
|
textLen EQU register2
|
|
textOfs EQU register3
|
|
textChr EQU register8
|
|
textFont EQU register9
|
|
textSlice EQU register10
|
|
scanLine EQU register11
|
|
digitMult EQU register12
|
|
digitIndex EQU register13
|
|
clearLoop EQU register14
|
|
|
|
|
|
printInit LDWI SYS_VDrawBits_134
|
|
STW giga_sysFn
|
|
LDW fgbgColour
|
|
STW giga_sysArg0
|
|
LD cursorXY + 1 ; xy = peek(256+2*y)*256 + x
|
|
LSLW
|
|
INC giga_vAC + 1
|
|
PEEK
|
|
ST giga_sysArg4 + 1
|
|
LD cursorXY
|
|
ST giga_sysArg4 ; xy position
|
|
RET
|
|
|
|
|
|
|
|
; prints text string pointed to by textStr
|
|
printText PUSH
|
|
LDWI printInit
|
|
CALL giga_vAC
|
|
|
|
; first byte is length
|
|
printT_char INC textStr ; next char
|
|
LDW textStr
|
|
PEEK
|
|
BEQ printT_exit ; check for delimiting zero
|
|
ST textChr
|
|
LDWI printChar
|
|
CALL giga_vAC
|
|
BRA printT_char
|
|
|
|
printT_exit POP
|
|
RET
|
|
|
|
|
|
|
|
; prints single digit in textNum
|
|
printDigit PUSH
|
|
LDW textNum
|
|
printD_index SUBW digitMult
|
|
BLT printD_cont
|
|
STW textNum
|
|
INC digitIndex
|
|
BRA printD_index
|
|
|
|
printD_cont LD digitIndex
|
|
BEQ printD_exit
|
|
ORI 0x30
|
|
ST textChr
|
|
LDWI printChar
|
|
CALL giga_vAC
|
|
LDI 0x30
|
|
ST digitIndex
|
|
printD_exit POP
|
|
RET
|
|
|
|
|
|
; prints 16bit int in textNum
|
|
printInt16 PUSH
|
|
LDWI printInit
|
|
CALL giga_vAC
|
|
LDI 0
|
|
ST digitIndex
|
|
LDW textNum
|
|
BGE printI16_pos
|
|
LDI 0x2D
|
|
ST textChr
|
|
LDWI printChar
|
|
CALL giga_vAC
|
|
LDI 0
|
|
SUBW textNum
|
|
STW textNum
|
|
|
|
printI16_pos LDWI 10000
|
|
STW digitMult
|
|
LDWI printDigit
|
|
CALL giga_vAC
|
|
LDWI 1000
|
|
STW digitMult
|
|
LDWI printDigit
|
|
CALL giga_vAC
|
|
LDI 100
|
|
STW digitMult
|
|
LDWI printDigit
|
|
CALL giga_vAC
|
|
LDI 10
|
|
STW digitMult
|
|
LDWI printDigit
|
|
CALL giga_vAC
|
|
LD textNum
|
|
ORI 0x30
|
|
ST textChr
|
|
LDWI printChar
|
|
CALL giga_vAC
|
|
POP
|
|
RET
|
|
|
|
|
|
; prints char in textChr
|
|
printChar LD textChr
|
|
ANDI 0x7F ; char can't be bigger than 127
|
|
SUBI 82
|
|
BGE printC_text82
|
|
ADDI 50
|
|
BLT printC_exit ; char<32 exit
|
|
STW textChr ; char-32
|
|
LDWI giga_text32 ; text font slice base address for chars 32-81
|
|
BRA printC_font
|
|
|
|
printC_text82 STW textChr ; char-82
|
|
LDWI giga_text82 ; text font slice base address for chars 82+
|
|
|
|
printC_font STW textFont
|
|
LD textChr
|
|
LSLW
|
|
LSLW
|
|
ADDW textChr
|
|
ADDW textFont
|
|
STW textFont ; char*5 + textFont
|
|
LDI 0x05
|
|
|
|
printC_slice ST textSlice
|
|
LDW textFont ; text font slice base address
|
|
LUP 0x00 ; get ROM slice
|
|
ST giga_sysArg2
|
|
SYS 134 ; draw vertical slice, SYS_VDrawBits_134, 270 - 134/2 = 0xCB
|
|
INC textFont ; next vertical slice
|
|
INC giga_sysArg4 ; next x
|
|
LD textSlice
|
|
SUBI 1
|
|
BNE printC_slice
|
|
|
|
ST giga_sysArg2 ; result of printC_slice is 0
|
|
SYS 134 ; draw last blank slice
|
|
INC giga_sysArg4 ; using sysArg4 as a temporary cursor address for multiple char prints
|
|
|
|
PUSH
|
|
%if TIME_SLICING
|
|
CALL realTimeStubAddr
|
|
%endif
|
|
LD cursorXY
|
|
ADDI giga_xfont
|
|
ST cursorXY
|
|
SUBI giga_xres - giga_xfont ; last possible char on line
|
|
BLE printC_pop
|
|
LDWI newLineScroll ; next row, scroll at bottom
|
|
CALL giga_vAC
|
|
|
|
printC_pop POP
|
|
|
|
printC_exit RET
|
|
|
|
|
|
atTextCursor LD cursorXY
|
|
SUBI giga_xres - giga_xfont
|
|
BLE atTC_checkY
|
|
LDI 0
|
|
ST cursorXY
|
|
|
|
atTC_checkY LD cursorXY + 1
|
|
SUBI giga_yres - giga_yfont
|
|
BLT atTC_resbot
|
|
LDI giga_yres - giga_yfont
|
|
ST cursorXY + 1
|
|
LDI ON_BOTTOM_ROW_BIT
|
|
ORW miscFlags
|
|
STW miscFlags ; set on bottom row flag
|
|
RET
|
|
|
|
atTC_resbot LDWI ON_BOTTOM_ROW_MSK
|
|
ANDW miscFlags
|
|
STW miscFlags ; reset on bottom row flag
|
|
RET
|
|
|
|
|
|
|
|
; clears the top giga_yfont lines of pixels in preparation of text scrolling
|
|
clearCursorRow PUSH
|
|
LDWI SYS_SetMemory_v2_54
|
|
STW giga_sysFn ; setup fill memory SYS routine
|
|
LD fgbgColour
|
|
ST giga_sysArg1 ; fill value
|
|
LDWI giga_videoTable
|
|
PEEK
|
|
ST giga_sysArg3 ; row0 high byte address
|
|
LDI giga_yfont
|
|
|
|
clearCR_loopy ST clearLoop
|
|
LDI giga_xres
|
|
ST giga_sysArg0
|
|
LDI 0
|
|
ST giga_sysArg2 ; low start address
|
|
SYS 54 ; fill memory
|
|
INC giga_sysArg3 ; next line
|
|
LD clearLoop
|
|
SUBI 1
|
|
BNE clearCR_loopy
|
|
%if TIME_SLICING
|
|
CALL realTimeStubAddr
|
|
%endif
|
|
LDWI printInit
|
|
CALL giga_vAC ; re-initialise the SYS registers
|
|
POP
|
|
RET
|
|
|
|
|
|
; print from top row to bottom row, then start scrolling
|
|
newLineScroll LDI giga_CursorX ; cursor x start
|
|
ST cursorXY
|
|
ST giga_sysArg4
|
|
LDI ENABLE_SCROLL_BIT
|
|
ANDW miscFlags
|
|
BNE newLS_cont0 ; is scroll on or off?
|
|
RET
|
|
|
|
newLS_cont0 PUSH
|
|
LDI ON_BOTTOM_ROW_BIT
|
|
ANDW miscFlags ; is on bottom row flag?
|
|
BNE newLS_cont1
|
|
LD cursorXY + 1
|
|
ADDI giga_yfont
|
|
ST cursorXY + 1
|
|
SUBI giga_yres
|
|
BLT newLS_exit
|
|
LDI giga_yres - giga_yfont
|
|
ST cursorXY + 1
|
|
|
|
newLS_cont1 LDWI clearCursorRow
|
|
CALL giga_vAC
|
|
LDWI giga_videoTable
|
|
STW scanLine
|
|
|
|
%if TIME_SLICING
|
|
newLS_scroll CALL realTimeStubAddr
|
|
LDW scanLine
|
|
%else
|
|
newLS_scroll LDW scanLine
|
|
%endif
|
|
PEEK
|
|
ADDI giga_yfont
|
|
ANDI 0x7F
|
|
SUBI giga_yfont
|
|
BGE newLS_adjust
|
|
ADDI giga_yfont
|
|
|
|
newLS_adjust ADDI giga_yfont
|
|
POKE scanLine
|
|
INC scanLine ; scanline pointers are 16bits
|
|
INC scanLine
|
|
LD scanLine
|
|
SUBI 0xF0 ; scanline pointers end at 0x01EE
|
|
BLT newLS_scroll
|
|
|
|
LDI ON_BOTTOM_ROW_BIT
|
|
ORW miscFlags
|
|
STW miscFlags ; set on bottom row flag
|
|
|
|
newLS_exit LDWI printInit
|
|
CALL giga_vAC ; re-initialise the SYS registers
|
|
POP
|
|
RET
|
|
|