home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser 2002 January
/
STC_CD_01_2002.iso
/
GAMES
/
COLUMSRC
/
COLUMS.BAK
< prev
next >
Wrap
Text File
|
2001-12-26
|
69KB
|
3,998 lines
MOD_BOX=0
MOD_DECI=0
MOD_HEXA=0
DEMO=0
DEBUG=0
MUSIC=1
*OPT D-
INCLUDE GUW_MAC2.S
IFEQ DEMO
OUTPUT C:\DEVPAC\SOURCES\COLUMS\COLUMS.PRG
ELSE
OUTPUT C:\DEVPAC\SOURCES\COLUMS\COLUMS_D.PRG
ENDC
***************************************
* prendre doc dsp pour mr canal!!!!!!!*
***************************************
OPT O+
* NIRINA :40298808
DEBUT
SETBLOCK MOVE.L A7,A5
MOVE.L 4(A5),A5
MOVE.L $C(A5),D0
ADD.L $14(A5),D0
ADD.L $1C(A5),D0
ADD.L #5*1024,D0 * 5k POUR LA PILE
MOVE.L D0,-(A7)
MOVE.L A5,-(A7)
MOVE.W #0,-(A7)
MOVE.W #$4A,-(A7)
TRAP #1
LEA 12(A7),A7
PEA 0.W
MOVE.W #$20,-(A7)
TRAP #1
ADDQ.L #6,A7
MOVE.L D0,OLD_SP
BSR SAVE_ENV
BSR LITTLE_INIT
MOVE.L #SCR,D0
AND.L #-8,D0
MOVE.L D0,ECRANRO
SUB.L #96*640,D0
MOVE.L D0,ECRANRO_TAB
MOVE.L D0,$44E.W
LEA ECRANRO,A0
MOVE.B 1(A0),$FFFF8201.W
MOVE.B 2(A0),$FFFF8203.W
MOVE.B 3(A0),$FFFF820D.W
MOVE.W #0,TV_MODE
MOVE.W OLD_REZ,D0
BTST #4,D0
BNE VGA
MOVE.W #1,TV_MODE
AND.W #%1111111001100000,D0
ADD.W #$100+$8+$3,D0 *NORMALEMENT
* EN PAL D0=$12B(640*400*256C)
MOVE.W D0,D7
MOVE.L $4F2,A0
MOVE.W 2(A0),D0
CMP.W #$0402,D0
BLE SPECIAL_SET_MODE
MOVE.W D7,D0
MOVE.W D0,-(A7)
IFEQ DEBUG
MOVE.W #$58,-(A7)
TRAP #14
ADDQ.L #4,A7
ELSE
MOVE.W #3,-(A7)
MOVE.L ECRANRO,-(A7)
MOVE.L ECRANRO,-(A7)
MOVE.W #$5,-(A7)
TRAP #14
LEA 14(A7),A7
ENDC
OK_TV
IFNE DEBUG
BRA DEBUG_REGS
ENDC
LEA REGS_50,A0
BTST #5,D7
BNE.S PAL_MODE
LEA REGS_60,A0
PAL_MODE
MOVE.W (A0)+,$FFFF82a4.W
MOVE.W (A0)+,$FFFF82a6.W
MOVE.W (A0)+,$FFFF82a8.W
MOVE.W (A0)+,$FFFF82aa.W
DEBUG_REGS
BRA.S GO
VGA
AND.W #%1111111001100000,D0
ADD.W #$10+$8+3,D0
MOVE.W D0,D7
MOVE.L $4F2,A0
MOVE.W 2(A0),D0
CMP.W #$0402,D0
BLE SPECIAL_SET_MODE
MOVE.W D7,D0
MOVE.W D0,-(A7)
IFEQ DEBUG
MOVE.W #$58,-(A7)
TRAP #14
ADDQ.L #4,A7
ELSE
MOVE.W #3,-(A7)
MOVE.L ECRANRO,-(A7)
MOVE.L ECRANRO,-(A7)
MOVE.W #$5,-(A7)
TRAP #14
LEA 14(A7),A7
ENDC
GO
IFNE DEBUG
BRA TO_DEBUG
ENDC
MOVE.B #$12,$FFFFFC02.W
MOVE.W #$2700,SR
MOVE.L $70.W,OLD_70
MOVE.L #VBL,$70.W
MOVE.W #$2300,SR
TO_DEBUG
BSR INIT_JOY
DO_MENU
IFNE MUSIC
BSR MUSIC_OFF
ENDC
IFEQ DEBUG
MOVEQ #1,D0
BSR FADE_OUT256
ENDC
LEA MENU,A0
MOVE.L ECRANRO,A1
BSR DEPACK * ATOMIK DEPACK NANANANERE !!!
BSR SAVE_FOND_DIF
BSR SAVE_FOND_SOUND
MOVEQ #0,D1
MOVE.W MENU_ITEM,D1
MULU.L #55*640,D1
MOVE.L ARROW_OFFSET,D2
ADD.L D1,D2
MOVE.L D2,OFFSET
BSR SAVE_FOND_G
ADD.L #640-32,OFFSET
BSR SAVE_FOND_D
BSR AFF_ARROWS
BSR DO_DIFICULTY
BSR AFF_SOUND
IFEQ DEBUG
LEA PAL,A0
MOVEQ #1,D0
BSR FADE_IN256
ENDC
BSR CLR_KEYB
IFNE MUSIC
BSR MUSIC_OFF
MOVE.L #BBP7,A0
MOVE.L #MODULE,A1
BSR DEPACK
MOVE.L #MODULE,A0
BSR MUSIC_ON
ENDC
MENU_LOOP
BSR WAIT_VBL
BSR AFF_ARROWS
BSR GET_CHAR
CMP.B #$01,KEY
BEQ FIN
CMP.B #$48,KEY
BNE CONT_MENU1
SUBQ.W #1,MENU_ITEM
CMP.W #0,MENU_ITEM
BGE CONT_MENU1
MOVE.W #5,MENU_ITEM
CONT_MENU1
CMP.B #$50,KEY
BNE CONT_MENU2
ADDQ.W #1,MENU_ITEM
CMP.W #5,MENU_ITEM
BLE CONT_MENU2
MOVE.W #0,MENU_ITEM
CONT_MENU2
CMP.B #$39,KEY
BNE CONT_MENU3
CMP.W #0,MENU_ITEM
BEQ DO_INFO
CMP.W #1,MENU_ITEM
BNE NOT_DIFICULTY
ADDQ.W #1,DIFICULT
BSR WAIT_VBL
BSR DO_DIFICULTY
NOT_DIFICULTY
CMP.W #2,MENU_ITEM
BNE NOT_DO_SOUND
BSR WAIT_VBL
BSR DO_SOUND
NOT_DO_SOUND
CMP.W #3,MENU_ITEM
BEQ PLAY
CMP.W #4,MENU_ITEM
BEQ HIGHSCORE
CMP.W #5,MENU_ITEM
BEQ FIN
CONT_MENU3
BRA MENU_LOOP
PLAY
IFNE MUSIC
BSR MUSIC_OFF
ENDC
IFEQ DEBUG
MOVEQ #1,D0
BSR FADE_OUT256
ENDC
JSR CLS
MOVE.W #0,LEV_PTR
BSR AFF_FOND
BSR LOAD_LEVEL
MOVE.W #0,$FFFF8900.W
BSR AFF_TET
IFNE MUSIC
CMP.W #1,SOUND
BEQ NO_LEV_MUSIC
MOVE.W DIFICULT,D0
SUBQ.W #1,D0
LEA TAB_MOD,A0
MOVE.L (A0,D0.W*4),A0
MOVE.L #MODULE,A1
BSR DEPACK
MOVE.L #MODULE,A0
BSR MUSIC_ON
BRA OK_FOR_SOUND
NO_LEV_MUSIC
MOVE.W #0,$FFFF8900.W
MOVE.W #1,-(A7)
MOVE.W #0,-(A7)
MOVE.W #0,-(A7)
MOVE.W #8,-(A7)
MOVE.W #0,-(A7)
MOVE.W #$8B,-(A7)
TRAP #14
ADD.L #$C,A7
OK_FOR_SOUND
ENDC
CMP.W #1,SOUND
BNE NO_START_SPL
MOVE.W #9,THE_SPL *TINGCLAC.RAW
BSR PLAY_SPE
NO_START_SPL
JSR WAIT_VBL
IFNE DEBUG
BRA TO_DEBUG_PAL
ENDC
IFEQ DEBUG
MOVE.L #PAL,A0
MOVEQ #1,D0
BSR FADE_IN256
ENDC
TO_DEBUG_PAL
MOVE.L #0,SCORE
MOVE.W #0,NB_EXPL
MOVE.W #0,NO_ROTAT
BSR INIT
BSR AFF_PIECE
BSR AFF_NEXT
BRA TOMBE_PIECE
MAIN_LOOP
BSR TEST_OF_LINE
BSR COMPTE_POINT
BSR TEST_HAUT
MOVE.W #0,SCANNED
BSR CLR_KEYB
CMP.W #4,TOP_OF_LINE
BLE GAME_OVER
CONT_MAIN
MOVE.W #4,CUR_COLONE
MOVE.W #3,CUR_LIGNE
MOVE.L #3*32+48,CUR_X
MOVE.L #0,CUR_Y
BSR NEXT_TO_CUR
BSR AFF_NEXT
MOVE.W #18,LINE_EXP
MOVE.W #1,COL_EXP
MOVE.W #0,WAIT_POSE
MOVE.W WAIT_Y_SAVE,WAIT_Y
MOVE.W #0,TOP_OF_LINE
BRA TOMBE_PIECE
FIN
IFNE MUSIC
BSR MUSIC_OFF
ENDC
IFEQ DEBUG
BSR WAIT_VBL
MOVEQ #1,D0
BSR FADE_OUT256
MOVE.W #$2700,SR
MOVE.L OLD_70,$70.W
ENDC
BSR RESTORE_JOY
MOVE.W #$2300,SR
BSR CLR_KEYB
BSR REST_ENV
CACA
appel xbios,105,2 ; dsp_unlock
MOVE.L OLD_SP,-(A7)
MOVE.W #$20,-(A7)
TRAP #1
ADDQ.L #6,A7
MOVE.W #0,-(A7)
TRAP #1
VBL
MOVE.W #1,OK
RTE
TOMBE_PIECE
MOVE.W #0,WAIT_POSE
GO_TOMBE
LEA TABLEAU,A4
MOVE.W CUR_COLONE,D4
MOVE.W #0,GD_FLAG
IFEQ DEBUG
BSR GET_CHAR
ELSE
MOVE.W #$7,-(A7)
TRAP #1
SWAP D0
MOVE.B D0,KEY
ENDC
CMP.B #$01,KEY
BEQ STOP_GAME
MOVE.B KEY,D7
MOVE.B D7,KEY_SAVE
CMP.B #$4B,KEY
BEQ GAUCHE
CMP.B #$4D,KEY
BEQ DROITE
CMP.B #$39,KEY
BEQ ROTATION
CMP.B #$50,KEY
BEQ FALL
CMP.B #$19,KEY
BEQ PAUSE
PLUS_PAUSE
DO_TEST
CMP.W #0,WAIT_POSE
BNE.S CONT_TST
CMP.W #1,WAIT_Y
BGE.S CONT_TST
MOVE.W INC_Y,D7
ADD.L D7,CUR_Y
MOVE.W WAIT_Y_SAVE,WAIT_Y
CONT_TST
SUBQ.W #1,WAIT_Y
JSR WAIT_VBL
BSR EFF_PIECE
BSR COLONE_TO_X
BSR AFF_PIECE
MOVE.L CUR_Y,D0
ADD.L #96+16,D0
DIVU.W #32,D0
MOVE.W D0,CUR_LIGNE
BRA TEST_BAS
************************
GAUCHE
CMP.W #15,WAIT_POSE
BEQ.S CONT_DO_GAUCHE
MOVE.W #1,GD_FLAG
CONT_DO_GAUCHE
MOVE.L CUR_Y,D5
ADD.L #3*32+16,D5
DIVU.W #32,D5
CMP.W #0,WAIT_POSE
BNE.S DO_GAUCHE
ADDQ.W #1,D5
DO_GAUCHE
MULU.W #9,D5
ADD.W D4,D5
SUBQ.W #1,D5
CMP.B #0,(A4,D5.W)
BNE.S BORD_GAUCHE
SUBQ #1,CUR_COLONE
MOVE.W #0,WAIT_POSE
MOVE.W #1,WAIT_Y
BRA DO_TEST
BORD_GAUCHE
MOVE.W #0,WAIT_POSE
MOVE.W #1,WAIT_Y
MOVE.B #0,KEY
BRA DO_TEST
***********************
DROITE
CMP.W #15,WAIT_POSE
BEQ.S CONT_DO_DROITE
MOVE.W #1,GD_FLAG
CONT_DO_DROITE
MOVE.L CUR_Y,D5
ADD.L #3*32+16,D5
DIVU.W #32,D5
CMP.W #0,WAIT_POSE
BNE.S DO_DROITE
ADDQ.W #1,D5
DO_DROITE
MULU.W #9,D5
ADD.W D4,D5
ADDQ.W #1,D5
CMP.B #0,(A4,D5.W)
BNE.S BORD_DROIT
ADDQ #1,CUR_COLONE
MOVE.W #0,WAIT_POSE
MOVE.W #1,WAIT_Y
BRA DO_TEST
BORD_DROIT
MOVE.W #0,WAIT_POSE
MOVE.W #1,WAIT_Y
MOVE.B #0,KEY
BRA DO_TEST
STOP_KEY
MOVE.B #0,KEY
MOVE.W #0,WAIT_POSE
MOVE.W #1,WAIT_Y
BRA DO_TEST
************************
ROTATION
MOVE.B #0,KEY
CMP.W #1,NO_ROTAT
BEQ DO_TEST
MOVE.L #CUR_PIECE,A5
MOVE.B 2(A5),D6
MOVE.B 1(A5),2(A5)
MOVE.B (A5),1(A5)
MOVE.B D6,(A5)
CMP.W #1,SOUND
BNE NO_SPACE_SPL
MOVE.W #7,THE_SPL *SPACE.RAW
BSR PLAY_SPE
NO_SPACE_SPL
BRA DO_TEST
**************************
FALL
CMP.W #1,SOUND
BNE NO_FALL_SPL
MOVE.W #12,THE_SPL *TINGCLAC.RAW
BSR PLAY_SPE
NO_FALL_SPL
MOVE.W #$13,$FFFFFC02.W
MOVEQ #0,D5
LEA TABLEAU,A4
MOVE.W CUR_LIGNE,D5
ADDQ.W #1,D5
MULU.W #9,D5
ADD.W CUR_COLONE,D5
CMP.B #0,(A4,D5.W)
BNE.S STOP_FALL
ADDQ.W #1,CUR_LIGNE
MOVE.W CUR_LIGNE,D5
SUBQ.W #3,D5
MULU.W #32,D5
SUB.L #16,D5
FALL2
BSR WAIT_VBL
BSR EFF_PIECE
MOVE.L D5,CUR_Y
BSR AFF_PIECE
MOVEQ #0,D5
LEA TABLEAU,A4
MOVE.W CUR_LIGNE,D5
ADDQ.W #1,D5
MULU.W #9,D5
ADD.W CUR_COLONE,D5
CMP.B #0,(A4,D5.W)
BNE.S STOP_FALL
ADDQ.W #1,CUR_LIGNE
MOVE.W CUR_LIGNE,D5
SUBQ.W #3,D5
MULU.W #32,D5
SUB.L #16,D5
BRA.S FALL2
STOP_FALL
MOVE.W #$11,$FFFFFC02.W
BRA.S PUT_IN_TAB
***************************
TEST_BAS
LEA TABLEAU,A4
MOVE.W CUR_LIGNE,D5
ADDQ.W #1,D5
MULU.W #9,D5
ADD.W CUR_COLONE,D5
CMP.B #0,(A4,D5.W)
BEQ TOMBE_PIECE
CMP.W #15,WAIT_POSE *ICI METTRE 15
BEQ.S PUT_IN_TAB
ADDQ.W #1,WAIT_POSE
BRA GO_TOMBE
PUT_IN_TAB
CMP.W #1,SOUND
BNE NO_PAUSE_SPL
MOVE.W #5,THE_SPL *PAUSE.RAW
BSR PLAY_SPE
NO_PAUSE_SPL
CMP.B #9,CUR_PIECE
BNE.S CONT_TEST_INTER
MOVE.W NB_PIECE,D7
MOVE.B CUR_PIECE,SAVE_P1
MOVE.B #0,SAVE_P2
BSR RANDOM
MOVE.B D7,CUR_PIECE
MOVE.B D7,SAVE_P3
BSR DO_INTER
CONT_TEST_INTER
CMP.B #9,CUR_PIECE+1
BNE.S CONT_TEST_INTER2
MOVE.W NB_PIECE,D7
MOVE.B CUR_PIECE+1,SAVE_P1
MOVE.B #1,SAVE_P2
BSR RANDOM
MOVE.B D7,CUR_PIECE+1
MOVE.B D7,SAVE_P3
BSR DO_INTER
CONT_TEST_INTER2
CMP.B #9,CUR_PIECE+2
BNE.S CONT_PUT_IN_TAB
MOVE.W NB_PIECE,D7
MOVE.B CUR_PIECE+2,SAVE_P1
MOVE.B #2,SAVE_P2
BSR RANDOM
MOVE.B D7,CUR_PIECE+2
MOVE.B D7,SAVE_P3
BSR DO_INTER
CONT_PUT_IN_TAB
BSR AFF_PIECE
LEA TABLEAU,A4
MOVE.W #0,WAIT_POSE
LEA CUR_PIECE,A5
MOVE.W CUR_LIGNE,D5
MOVE.W D5,D4
SUBQ #1,D4
MOVE.W D4,D3
SUBQ #1,D3
MULU.W #9,D5
MULU.W #9,D4
MULU.W #9,D3
ADD.W CUR_COLONE,D5
ADD.W CUR_COLONE,D4
ADD.W CUR_COLONE,D3
MOVE.B (A5)+,(A4,D3.W)
MOVE.B (A5)+,(A4,D4.W)
MOVE.B (A5),(A4,D5.W)
MOVE.W #0,PTR_PIECE
CMP.B #16,CUR_PIECE
BEQ DO_SMILE
CMP.B #16,CUR_PIECE+1
BEQ DO_SMILE
CMP.B #16,CUR_PIECE+2
BEQ DO_SMILE
NO_SMILE
* BRA LOOP_TEST_TAB
TEST_STAR
MOVEQ #0,D0
MOVE.B CUR_PIECE+2,D0
CMP.B #10,D0 * STAR
BNE LOOP_TEST_TAB
LOOP_STAR
CMP.W #1,SOUND
BNE NO_STAR_SPL
MOVE.W #8,THE_SPL *STAR.RAW
BSR PLAY_SPE
NO_STAR_SPL
LEA TABLEAU,A0
MOVE.W CUR_COLONE,D1 *POUR REDRAW
MOVE.W CUR_LIGNE,D3
MOVE.W D3,D4
ADDQ.W #1,D4 * CUR_LIGNE+1
MOVE.W D4,CUR_LIGNE * POUR LA BOUCLE SUIVANTE
MULU.W #9,D3 *LIGNE DS TAB
MULU.W #9,D4 *
ADD.W D1,D3 *+COLONE
ADD.W D1,D4 *
MOVE.B (A0,D4.W),D5
CMP.B #$FF,D5
BEQ LOOP_TEST_TAB
MOVE.B (A0,D3.W),(A0,D4.W)
MOVE.B D5,(A0,D3.W)
REPT 7
BSR WAIT_VBL
ENDR
BSR REDRAW
BRA LOOP_STAR
LOOP_TEST_TAB
MOVE.W #1,EXPL_TYPE
MOVEQ #0,D0
MOVE.L D0,D1
LEA TAB_EXPL,A6
LEA TABLEAU,A5
MOVE.W LINE_EXP,D0 *18 EME LIGNE
MOVE.W COL_EXP,D1 *1 ERRE COLONE
TEST_TAB
MOVEQ #0,D2
MOVE.L D2,D3
MOVE.L D2,D4
MOVE.L D2,D5
MOVE.L D2,D6
MOVE.L D2,D7
MOVE.W D0,D2 *LIGNE
MULU.W #9,D2 *INDEX LIGNE DANS TABLEAU
ADD.W D1,D2 *INDEX PIECE DS TAB
MOVE.B 0(A5,D2.W),D7 *PIECE A TESTE
CMP.B #0,D7
BEQ NEXT_ONE
CMP.B #12,D7 * MUR
BEQ NEXT_ONE
CMP.B #11,D7 * DISQUETTE
BEQ DISQUETTE
CMP.B #17,D7 * BULLE
BEQ DO_BULLE
CMP.B #13,D7 * M DE MCS
BEQ TEST_MCS
TEST_THEM
************************
**** TEST AU DESSUS ****
**** ET EN DESSOUS ****
************************
MOVE.W D0,D2
MOVE.W D0,D3
SUBQ.W #1,D2 *LIGNE AU DESSUS
ADDQ.W #1,D3 *LIGNE EN DESSOUS
MOVE.W D2,D4 * SAUVE LIGNES POUR TAB_EXPL
MOVE.W D3,D5 *
MULU.W #9,D2
MULU.W #9,D3
ADD.W D1,D2 * PIECE DESSUS
ADD.W D1,D3 * PIECE DESSOUS
MOVE.B 0(A5,D2.W),D6
CMP D6,D7
BNE.S DROITE_GAUCHE
MOVE.B 0(A5,D3.W),D6
CMP D6,D7
BNE.S DROITE_GAUCHE
****** PIECE AU DESSUS ******
MOVE.W D4,(A6)+ * LIGNE
MOVE.W D1,(A6)+ * COLONE
****** PIECE DU DESSOUS ******
MOVE.W D5,(A6)+ * LIGNE
MOVE.W D1,(A6)+ * COLONE
MOVE.W #1,FLAG
*****************************
*** TEST DROITE ET GAUCHE ***
*****************************
DROITE_GAUCHE
MOVE.W D0,D2 * LIGNE
MOVE.W D1,D3 *
MOVE.W D1,D4 * COLONE
ADDQ.W #1,D3 * COLONE SUIVANTE
SUBQ.W #1,D4 * COLONE PRECEDANTE
MOVE.W D3,D5 *
MOVE.W D4,D6 * SAUVE COLONE POUR TAB_EXPL
MULU.W #9,D2 * LIGNE DANS TABLEAU
ADD.W D2,D3 * +COLONE
ADD.W D2,D4 * +COLONE
MOVE.B 0(A5,D3.W),D3
CMP.B D3,D7
BNE.S DIAG_MONTE
MOVE.B 0(A5,D4.W),D4
CMP.B D4,D7
BNE.S DIAG_MONTE
****** PIECE DROITE ******
MOVE.W D0,(A6)+ * LIGNE
MOVE.W D5,(A6)+ * COLONE
****** PIECE GAUCHE ******
MOVE.W D0,(A6)+ * LIGNE
MOVE.W D6,(A6)+ * COLONE
MOVE.W #1,FLAG
***********************************
***** DIAGONALE MONTE VERS DROITE *
***********************************
DIAG_MONTE
MOVE.W D0,D2 * LIGNE
MOVE.W D0,D3
MOVE.W D1,D4 * COLONE
MOVE.W D1,D5
ADDQ.W #1,D2 * LIGNE AU DESSUS
ADDQ.W #1,D4 * COLONE DROITE
MOVE.W D2,(A6)
MOVE.W D4,2(A6)
SUBQ #1,D3 * LIGNE DESSOUS
SUBQ #1,D5 * COLONE GAUCHE
MOVE.W D3,4(A6)
MOVE.W D5,6(A6)
MULU.W #9,D2
MULU.W #9,D3
ADD.W D4,D2
ADD.W D5,D3
MOVE.B 0(A5,D2.W),D6
CMP.B D6,D7
BNE.S DIAG_DESCEND
MOVE.B 0(A5,D3.W),D6
CMP.B D6,D7
BNE.S DIAG_DESCEND
ADD.L #8,A6
MOVE.W #1,FLAG
******************************
***** DIAG VERS BAS DROITE ***
******************************
DIAG_DESCEND
MOVE.W D0,D2 * LIGNE
MOVE.W D0,D3
MOVE.W D1,D4 * COLONE
MOVE.W D1,D5
SUBQ.W #1,D2 * LIGNE AU DESSOUS
ADDQ.W #1,D4 * COLONE DROITE
MOVE.W D2,(A6)
MOVE.W D4,2(A6)
ADDQ #1,D3 * LIGNE DESSUS
SUBQ #1,D5 * COLONE GAUCHE
MOVE.W D3,4(A6)
MOVE.W D5,6(A6)
MULU.W #9,D2
MULU.W #9,D3
ADD.W D4,D2
ADD.W D5,D3
MOVE.B 0(A5,D2.W),D6
CMP.B D6,D7
BNE.S NEXT_ONE
MOVE.B 0(A5,D3.W),D6
CMP.B D6,D7
BNE.S NEXT_ONE
ADD.L #8,A6
MOVE.W #1,FLAG
NEXT_ONE
MOVE.L #0,(A6)
CMP.W #1,FLAG
BNE.S DO_NEXT_ONE
MOVE.W D0,(A6)+
MOVE.W D1,(A6)+
DO_NEXT_ONE
MOVE.W #0,FLAG
ADDQ.W #1,D1 *COLONE SUIVANTE
CMP.W #8,D1
BNE.S OK_COL
MOVE.W #1,D1
SUBQ.W #1,D0
OK_COL
CMP.W #1,D0
BNE NOT_YET_EXPL
MOVE.W #1,DO_IT_NORMAL
BRA DO_EXPLOSION
NOT_YET_EXPL
BRA TEST_TAB
DISQUETTE
* D0=LIGNE DISK
* D1=COLONE DISK
* A5=TABLEAU
* A6=TABLEAU DES EXPLOSION
* NE PAS TOUCHER D0,D1,A5
MOVE.W D0,(A6)+
MOVE.W D1,(A6)+
MOVE.W D0,D2 * LIGNE
MOVE.W D1,D3 * COLONNE
SUBQ.W #1,D3 * DROITE DISK
MULU.W #9,D2
ADD.W D3,D2
CMP.B #$FF,(A5,D2.W)
BEQ VERS_GAUCHE
CMP.B #0,(A5,D2.W)
BEQ VERS_GAUCHE
MOVE.W D0,(A6)+
MOVE.W D3,(A6)+
VERS_GAUCHE
ADDQ.W #2,D3 * GAUCHE DISK
MOVE.W D0,D2
MULU.W #9,D2
ADD.W D3,D2
CMP.B #$FF,(A5,D2.W)
BEQ VERS_BAS
CMP.B #0,(A5,D2.W)
BEQ VERS_BAS
MOVE.W D0,(A6)+
MOVE.W D3,(A6)+
VERS_BAS
MOVE.W D0,D2
MOVE.W D1,D3
ADDQ.W #1,D2 * DESSOUS
MOVE.W D2,D4 * D4=LIGNE
MULU.W #9,D2 * D2*9+D3=OFFSET TAB
ADD.W D3,D2
CMP.B #$FF,(A5,D2.W) * ON EST EN BAS???
BEQ VERS_HAUT * OUI, BEIN ON VA VOIR AILLEUR
CMP.B #0,(A5,D2.W) * Y'A T'IL UNE PIECE?
BEQ CONT_BAS_GAUCHE * OUI, ALORS ON CONTINUE.
MOVE.W D4,(A6)+
MOVE.W D3,(A6)+
CONT_BAS_GAUCHE
ADDQ.W #1,D3
MOVE.W D4,D2
MULU.W #9,D2
ADD.W D3,D2
CMP.B #$FF,(A5,D2.W)
BEQ CONT_BAS_DROITE
CMP.B #0,(A5,D2.W)
BEQ CONT_BAS_DROITE
MOVE.W D4,(A6)+
MOVE.W D3,(A6)+
CONT_BAS_DROITE
SUBQ #2,D3
MOVE.W D4,D2
MULU.W #9,D2
ADD.W D3,D2
CMP.B #$FF,(A5,D2.W)
BEQ VERS_HAUT
CMP.B #0,(A5,D2.W)
BEQ VERS_HAUT
MOVE.W D4,(A6)+
MOVE.W D3,(A6)+
VERS_HAUT
MOVE.W D0,D2
MOVE.W D1,D3
SUBQ.W #1,D2
CMP.W #0,D2
BEQ FIN_DISK
MOVE.W D2,D4
MULU.W #9,D2
ADD.W D3,D2
CMP.B #0,(A5,D2.W)
BEQ HAUT_GAUCHE
MOVE.W D4,(A6)+
MOVE.W D3,(A6)+
HAUT_GAUCHE
MOVE.W D4,D2
ADDQ.W #1,D3
MULU.W #9,D2
ADD.W D3,D2
CMP.B #$FF,(A5,D2.W)
BEQ HAUT_DROITE
CMP.B #0,(A5,D2.W)
BEQ HAUT_DROITE
MOVE.W D4,(A6)+
MOVE.W D3,(A6)+
HAUT_DROITE
MOVE.W D4,D2
SUBQ.W #2,D3
MULU.W #9,D2
ADD.W D3,D2
CMP.B #$FF,(A5,D2.W)
BEQ FIN_DISK
CMP.B #0,(A5,D2.W)
BEQ FIN_DISK
MOVE.W D4,(A6)+
MOVE.W D3,(A6)+
FIN_DISK
MOVE.L #0,(A6)+
MOVE.W #2,EXPL_TYPE
MOVE.W #0,DO_IT_NORMAL
CMP.W #1,SOUND
BNE NO_DISK_SPL
MOVE.W #0,THE_SPL *SPACE.RAW
BSR PLAY_SPE
NO_DISK_SPL
BRA DO_EXPLOSION
DO_BULLE
* D0=LIGNE DISK
* D1=COLONE DISK
* A5=TABLEAU
* A6=TABLEAU DES EXPLOSION
* NE PAS TOUCHER D0,D1,A5
MOVE.W D0,D2 * LIGNE
MOVE.W #4,D5
LOOP_BULLE
SUBQ.W #1,D2
MOVE.W D2,D4
MULU.W #9,D2
ADD.W D1,D2
CMP.B #0,(A5,D2.W)
BEQ FIN_BULLE
MOVE.W D4,D2
DBRA D5,LOOP_BULLE
MOVE.W D0,(A6)+
MOVE.W D1,(A6)+
MOVE.L #0,(A6)+
MOVE.W #2,EXPL_TYPE
MOVE.W #0,DO_IT_NORMAL
CMP.W #1,SOUND
BNE NO_BULLE_SPL
MOVE.W #1,THE_SPL * BULLE.RAW
BSR PLAY_SPE
NO_BULLE_SPL
BRA DO_EXPLOSION
FIN_BULLE
BRA TEST_THEM
TEST_MCS
* D0=LIGNE DISK
* D1=COLONE DISK
* A5=TABLEAU
* A6=TABLEAU DES EXPLOSION
* NE PAS TOUCHER D0,D1,A5
* D7=13 -> M
MOVE.L A6,A3
MOVE.L A6,A4
ADDQ.L #4,A3
MOVE.W D7,D6 * M
MOVE.W D7,D5 * M
ADDQ #1,D5 * C
ADDQ #2,D6 * S
MOVE.W D0,(A6)+ * M DANS TAB_EXPL
MOVE.W D1,(A6)+ *
* S
* C
* M
MOVE.W D0,D2 * LIGNE
SUBQ.W #1,D2 * LIGNE AU DESSUS
MOVE.W D2,D3 * POUR TAB_EXPL
MULU.W #9,D2
ADD.W D1,D2 * PIECE DESSUS
MOVE.B (A5,D2.W),D4
CMP.B D4,D5
BNE CONT_M_1
MOVE.W D3,(A6)+ * C DANS TAB_EXPL
MOVE.W D1,(A6)+ *
MOVE.W D0,D2
SUBQ.W #2,D2 * 2 PIECES AU DESSUS
MOVE.W D2,D3 * POUR METTRE S DANS TAB_EXPL
MULU.W #9,D2
ADD.W D1,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D6
BNE CONT_M_1
MOVE.W D3,(A6)+
MOVE.W D1,(A6)+
BRA OK_MCS
* M
* C
* S
CONT_M_1
MOVE.L A3,A6 * ON RECUPERE A6
MOVE.L #0,(A6)
MOVE.L #0,4(A6)
MOVE.W D0,D2 * LIGNE
ADDQ.W #1,D2 * LIGNE AU DESSOUS
MOVE.W D2,D3 * POUR TAB_EXPL
MULU.W #9,D2
ADD.W D1,D2 * PIECE DESSOUS
MOVE.B (A5,D2.W),D4
CMP.B D4,D5
BNE CONT_M_2
MOVE.W D3,(A6)+ * C DANS TAB_EXPL
MOVE.W D1,(A6)+ *
MOVE.W D0,D2
ADDQ.W #2,D2 * 2 PIECES AU DESSOUS
MOVE.W D2,D3 * POUR METTRE S DANS TAB_EXPL
MULU.W #9,D2 *
ADD.W D1,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D6
BNE CONT_M_2
MOVE.W D3,(A6)+
MOVE.W D1,(A6)+
BRA OK_MCS
* MCS
CONT_M_2
MOVE.L A3,A6 * ON RECUPERE A6
MOVE.L #0,(A6)
MOVE.L #0,4(A6)
MOVE.W D0,D2
MOVE.W D1,D3
ADDQ.W #1,D3 * PIECE DE DROITE
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D5 * C
BNE CONT_M_3
MOVE.W D0,(A6)+ * C DANS TAB_EXPL
MOVE.W D3,(A6)+
MOVE.W D0,D2
ADDQ.W #1,D3 * 2eme PIECE A DROITE
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D6 * S
BNE CONT_M_3
MOVE.W D0,(A6)+
MOVE.W D3,(A6)+
BRA OK_MCS
* SCM -> BEIN OUI MCS A L'ENVERS QUOI!
CONT_M_3
MOVE.L A3,A6 * ON RECUPERE A6
MOVE.L #0,(A6)
MOVE.L #0,4(A6)
MOVE.W D0,D2
MOVE.W D1,D3
SUBQ.W #1,D3 * PIECE DE GAUCHE
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D5 * C
BNE CONT_M_4
MOVE.W D0,(A6)+ * C DANS TAB_EXPL
MOVE.W D3,(A6)+
MOVE.W D0,D2
SUBQ.W #1,D3 * 2eme PIECE A GAUCHE
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D6 * S
BNE CONT_M_4
MOVE.W D0,(A6)+
MOVE.W D3,(A6)+
BRA OK_MCS
* M
* C
* S
CONT_M_4
MOVE.L A3,A6 * ON RECUPERE A6
MOVE.L #0,(A6)
MOVE.L #0,4(A6)
MOVE.W D0,D2
MOVE.W D1,D3
ADDQ.W #1,D2 * DIAG BAS DROITE
ADDQ.W #1,D3 *
MOVE.L D2,A1 * YA PLUS DE REG DE DONNEE !!
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D5 * C
BNE CONT_M_5
MOVE.L A1,D2
MOVE.W D2,(A6)+ * C DANS TAB_EXPL
MOVE.W D3,(A6)+ *
ADDQ.W #1,D2
ADDQ.W #1,D3
MOVE.L D2,A1
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D6 * S
BNE CONT_M_5
MOVE.L A1,D2
MOVE.W D2,(A6)+
MOVE.W D3,(A6)+
BRA OK_MCS
* S
* C
* M
CONT_M_5
MOVE.L A3,A6 * ON RECUPERE A6
MOVE.L #0,(A6)
MOVE.L #0,4(A6)
MOVE.W D0,D2
MOVE.W D1,D3
SUBQ.W #1,D2 * DIAG HAUT GAUCHE
SUBQ.W #1,D3 *
MOVE.L D2,A1 * YA PLUS DE REG DE DONNEE !!
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D5 * C
BNE CONT_M_6
MOVE.L A1,D2
MOVE.W D2,(A6)+ * C DANS TAB_EXPL
MOVE.W D3,(A6)+ *
SUBQ.W #1,D2
SUBQ.W #1,D3
MOVE.L D2,A1
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D6 * S
BNE CONT_M_6
MOVE.L A1,D2
MOVE.W D2,(A6)+
MOVE.W D3,(A6)+
BRA OK_MCS
* S
* C
* M
CONT_M_6
MOVE.L A3,A6 * ON RECUPERE A6
MOVE.L #0,(A6)
MOVE.L #0,4(A6)
MOVE.W D0,D2
MOVE.W D1,D3
SUBQ.W #1,D2 * DIAG HAUT DROITE
ADDQ.W #1,D3 *
MOVE.L D2,A1 * YA PLUS DE REG DE DONNEE !!
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D5 * C
BNE CONT_M_7
MOVE.L A1,D2
MOVE.W D2,(A6)+ * C DANS TAB_EXPL
MOVE.W D3,(A6)+ *
SUBQ.W #1,D2
ADDQ.W #1,D3
MOVE.L D2,A1
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D6 * S
BNE CONT_M_7
MOVE.L A1,D2
MOVE.W D2,(A6)+
MOVE.W D3,(A6)+
BRA OK_MCS
* M
* C
* S
CONT_M_7
MOVE.L A3,A6 * ON RECUPERE A6
MOVE.L #0,(A6)
MOVE.L #0,4(A6)
MOVE.W D0,D2
MOVE.W D1,D3
ADDQ.W #1,D2 * DIAG BAS GAUCHE
SUBQ.W #1,D3 *
MOVE.L D2,A1 * YA PLUS DE REG DE DONNEE !!
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D5 * C
BNE CONT_M_8
MOVE.L A1,D2
MOVE.W D2,(A6)+ * C DANS TAB_EXPL
MOVE.W D3,(A6)+ *
ADDQ.W #1,D2
SUBQ.W #1,D3
MOVE.L D2,A1
MULU.W #9,D2
ADD.W D3,D2
MOVE.B (A5,D2.W),D4
CMP.B D4,D6 * S
BNE CONT_M_8
MOVE.L A1,D2
MOVE.W D2,(A6)+
MOVE.W D3,(A6)+
BRA OK_MCS
CONT_M_8
MOVE.L A4,A6 * ON RECUPERE A6
MOVE.L #0,(A6)
MOVE.L #0,4(A6)
BRA DO_NEXT_ONE
OK_MCS
MOVE.W #0,NB_SCANNED
MOVE.W #2,EXPL_TYPE
MOVE.B #12,THE_PIECE
BSR GET_ALL_PIECES
MOVE.W NB_MUR,D0
ADD.W NB_SCANNED,D0
ADD.W D0,NB_MUR
LEA SCANNED,A3
LOOP_WALL
CMP.L #0,(A3)
BEQ OK_TO_EXPLOSION
MOVE.L (A3)+,(A6)+
BRA LOOP_WALL
OK_TO_EXPLOSION
CMP.W #1,SOUND
BNE NO_MCS_SPL
MOVE.W #10,THE_SPL *SPACE.RAW
BSR PLAY_SPE
NO_MCS_SPL
BRA DO_EXPLOSION
DO_SMILE MOVEM.L D0-D7/A0-A6,-(A7)
CMP.W #1,SOUND
BNE NO_SMILE_SPL
MOVE.W #6,THE_SPL *SMILE.RAW
BSR PLAY_SPE
NO_SMILE_SPL
LEA TABLEAU,A5
MOVE.W CUR_LIGNE,D0
MOVE.W CUR_COLONE,D1
MOVE.W D0,D2
CMP.B #16,CUR_PIECE
BNE CONT_SM_1
SUB.W #2,D2
BRA OK_FOR_SMILE
CONT_SM_1
CMP.B #16,CUR_PIECE+1
BNE OK_FOR_SMILE
SUB.W #1,D2
OK_FOR_SMILE
ADDQ.W #1,D2 * PIECE DU DESSOUS
MULU.W #9,D2
ADD.W D1,D2
MOVE.B (A5,D2.W),D4
CMP.B #$FF,D4
BEQ FIN_SMILE
MOVE.B D4,THE_PIECE
BSR GET_ALL_PIECES
LEA SCANNED,A1
LOOP_SMILE
MOVEQ #0,D5
MOVEQ #0,D6
MOVEQ #0,D1
CMP.L #0,(A1)
BEQ FIN_SMILE
MOVE.W (A1)+,D5
MOVE.W (A1)+,D6
MOVE.W NB_PIECE,D7
BSR RANDOM
MULU.W #9,D5
ADD.W D6,D5
MOVE.B D7,(A5,D5.W)
MOVE.W D6,D1
MOVE.L A5,A0
REPT 4
JSR WAIT_VBL
ENDR
BSR REDRAW
BRA LOOP_SMILE
FIN_SMILE
MOVEM.L (A7)+,D0-D7/A0-A6
BRA NO_SMILE
********************************
***** BOOOUUUMMMMM *****
********************************
DO_EXPLOSION
ADDQ.W #1,REDONDANCE
LEA TAB_EXPL,A5
TRIE_TAB
LEA TAB_EXPL_TRIE,A4
MOVE.L (A5)+,D0
CMP.L #0,D0
BEQ.S DO_EXPLODE
TRIE_NEXT
MOVE.L (A4),D2
CMP.L D0,D2
BEQ TRIE_TAB
CMP.L #0,(A4)
BEQ.S OK_PUT
ADDQ.L #4,A4
BRA.S TRIE_NEXT
OK_PUT
MOVE.L D0,(A4)+
BRA TRIE_TAB
DO_EXPLODE
LEA TABLEAU,A4
LEA PIECE,A3
ADD.W PTR_PIECE,A3
NOT_HERE
CMP.B #0,(A3)+
BNE NOT_HERE
SUBQ #1,A3
LEA TAB_EXPL_TRIE,A5
LOOP_GET_PIECE
CMP.L #0,(A5)
BEQ.S BOUM
MOVE.W (A5)+,D0
MOVE.W (A5)+,D1
MULU.W #9,D0
ADD.W D1,D0
MOVE.B (A4,D0.W),(A3)+
ADDQ.W #1,PTR_PIECE
BRA LOOP_GET_PIECE
BOUM
LEA TAB_EXPL_TRIE,A5
CMP.L #0,(A5)
BEQ MAIN_LOOP
CMP.W #1,SOUND
BNE NO_NORMAL_SPL
CMP.W #1,DO_IT_NORMAL
BNE NO_NORMAL_SPL
MOVE.W #4,THE_SPL *NORMAL.RAW
BSR PLAY_SPE
NO_NORMAL_SPL
LEA TABLEAU,A4
CMP.W #2,EXPL_TYPE
BNE EXPL_NORMAL
LEA TAB_EXPL2,A3
BRA ON_Y_GO
EXPL_NORMAL
LEA TAB_EXPL1,A3
ON_Y_GO
ADDQ.W #1,NB_EXPL
MOVEQ #0,D6
MOVE.W #4,D7
LOOP_EXPL
MOVE.L (A3,D6.W*4),SPRITE
LEA TAB_EXPL_TRIE,A5
LOOP_EXPL_INT
CMP.L #0,(A5)
BEQ.S FIN_EXPL
MOVEQ #0,D0
MOVE.L D0,D1
MOVE.L D0,D2
MOVE.L D0,D3
MOVE.W (A5)+,D0 * LIGNE
MOVE.W (A5)+,D1 * COLONE
MOVE.W D0,D2
MOVE.W D1,D3
MULU.W #9,D0
ADD.W D1,D0
MOVE.B #0,(A4,D0.W)
SUBQ #1,D2
MULU.L #640*32,D2 * Y SPRITE
SUB.L #16*640,D2
MULU.L #32,D3 * X SPRITE
ADD.L #16,D3
ADD.L D3,D2 * OFFSET ECRANRO
MOVE.L D2,OFFSET
BSR AFF_SPRT
BRA.S LOOP_EXPL_INT
FIN_EXPL
ADDQ.W #1,D6
CMP.W #5,D6
BEQ.S STOP_EXPL
REPT 5
BSR WAIT_VBL
ENDR
DBRA D7,LOOP_EXPL
STOP_EXPL
MOVE.L #265,D0
LEA TAB_EXPL,A1
LEA TAB_EXPL_TRIE,A2
CLR_TAB_EXPL
MOVE.L #0,(A1)+
MOVE.L #0,(A2)+
DBRA D0,CLR_TAB_EXPL
************************************
***** RETOMBURE DES PIECES ICI *****
************************************
* ATTENDRE FIN SPL
LEA TABLEAU,A0
MOVEQ #19,D0 * 19 EME LIGNE
MOVEQ #0,D1 * COLONE 0
MOVEQ #6,D2 * 7 COLONES A TESTER
RETOMB_LOOP
ADDQ.W #1,D1 * COLONE SUIVANTE
MOVE.W D0,A1
COLONE_LOOP
SUBQ.W #1,A1 * LIGNE AU DESSUS
CMP.W #0,A1 * ON EST EN HAUT?
BEQ.S HAUT_COLONE * OUI !!!
MOVE.W A1,D3 * LIGNE
MULU.W #9,D3 * LIGNE*9
ADD.W D1,D3 * +COLONE
CMP.B #0,0(A0,D3.W) * TROUS ??
BNE.S COLONE_LOOP * NON ALORS ON VA VOIR
* AU DESSUS
* SINON
MOVE.W A1,D5 * LIGNE
MOVE.W D5,D7
MOVE.W D5,D4
COPY_COLONE
SUBQ.W #1,D5
CMP.W #0,D5
BEQ COLONE_LOOP
MOVE.W D5,D6 * LIGNE DU DESSUS
MOVE.W D5,D4 * LIGNE DU DESSUS
MULU.W #9,D6 * LIGNE DESSUS*9
ADD.W D1,D6 * +COLONE
MOVE.W D6,D3
TEST_0
CMP.B #0,0(A0,D6.W)
BNE.S OK_COPY
SUB.W #9,D6
SUBQ.W #1,D4
CMP.W #0,D4
BEQ.S HAUT_COLONE
BRA.S TEST_0
OK_COPY
MOVE.B 0(A0,D6.W),9(A0,D3.W) *ET ON COPY EN DESSOUS
MOVE.B #0,0(A0,D6.W)
BRA COPY_COLONE * JUSQU'EN HAUT
HAUT_COLONE
BSR.S REDRAW *ON REAFICHE LA COLONE
DBRA D2,RETOMB_LOOP
ICI
BRA LOOP_TEST_TAB
********************************
** REAFICHER LA COLONE APRES **
** LES EXPLOSIONS ET LA **
** RETOMBURE **
********************************
REDRAW * D1=N° COLONE
* A0=TABLEAU
MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.L A0,A5 *TABLEAU
LEA TAB_SPR,A4
MOVEQ #0,D4 * LIGNE DEPART
MOVE.L D1,D5 * COLONE
MULU.L #32,D5 * COLONE*32
ADD.L #16,D5 * +BORD=X SPRITE
LOOP_REDRAW
ADDQ #1,D4
CMP.W #19,D4
BEQ.S FIN_REDRAW
MOVE.L D4,D6
SUBQ #1,D6
MULU.L #32,D6 *NO LIGNE SCREEN
SUB.L #16,D6
MULU.L #640,D6
ADD.L D5,D6
MOVE.L D6,OFFSET
MOVE.L D4,D6 * LIGNE
MULU.L #9,D6 * LIGNE*9
ADD.L D1,D6 * +COLONE
MOVEQ #0,D3
MOVE.B 0(A5,D6.W),D3 * D3=PIECE
MOVE.L 0(A4,D3.W*4),SPRITE *SPRITE
BSR AFF_SPRT
BRA.S LOOP_REDRAW
FIN_REDRAW
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
********************************
**** AFFICHE TETE POUR NIVEAU **
********************************
AFF_TET
CMP.W #1,SOUND
BNE NO_TET_SPL
MOVE.W #11,THE_SPL *SPACE.RAW
BSR PLAY_SPE
NO_TET_SPL
BSR WAIT_VBL
MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.L ECRANRO,A0
ADD.L #(240*640)+320,A0
MOVE.L #LEVEL,A1
MOVE.L #199,D0
LOOP_TET
MOVEQ #(320/4)-1,D1
LOOP_TET2
MOVE.L (A1)+,(A0)+
DBRA D1,LOOP_TET2
LEA 320(A0),A0
DBRA D0,LOOP_TET
MOVE.L #(256*640)+(320+128+64),OFFSET
LEA TAB_DIGIT,A4
MOVE.W LEV_PTR,D2
CMP.W #40,D2
BLT NOT_10
MOVE.W #4,D2
MOVE.L (A4,D2.W),SPRITE
BSR AFF_SPRT
ADD.L #32,OFFSET
MOVE.W #0,D2
NOT_10
MOVE.L (A4,D2.W),SPRITE
BSR AFF_SPRT
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
*********************************
**** CHARGE TETE DU NIVEAU ****
*********************************
LOAD_LEVEL
MOVEM.L D0-D7/A0-A6,-(A7)
MOVEQ #0,D0
MOVE.W LEV_PTR,D0
IFEQ DEMO
MOVE.L #LEV_LOAD,A0
ADD.L D0,A0
MOVE.L (A0),D7
MOVE.W #0,-(A7)
MOVE.L D7,-(A7)
MOVE.W #$3D,-(A7)
TRAP #1
ADDQ.L #8,A7
MOVE.W D0,FHANDLE
MOVE.L #LEVEL,-(A7)
MOVE.L #64000,-(A7)
MOVE.W FHANDLE,-(A7)
MOVE.W #$3F,-(A7)
TRAP #1
LEA 12(A7),A7
MOVE.W FHANDLE,-(A7)
MOVE.W #$3E,-(A7)
TRAP #1
ADDQ.L #4,A7
ADDQ.W #4,LEV_PTR
ENDC
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
*************************************
** ON SAUVE L'ENVIRONEMENT POUR NE **
** PAS TOUT CASER QUAND ON RESSORT **
*************************************
SAVE_ENV
SYNCRO
LEA $FFFF9800.W,A0
LEA OLD_PAL,A1
MOVE.L #255,D0
LOOP_S_PAL
MOVE.L (A0)+,(A1)+
DBRA D0,LOOP_S_PAL
MOVE.W #-1,-(A7)
MOVE.W #$58,-(A7)
TRAP #14
ADDQ.L #4,A7
MOVE.W D0,OLD_REZ
MOVE.L $44E.W,OLD_PHYS
RTS
***************************************
** ON RESTORE L'ENVIRONEMENT POUR NE **
** PAS TOUT CASSER QUAND ON RESSORT **
***************************************
REST_ENV
IFEQ DEBUG
MOVE.L $4F2,A0
MOVE.W 2(A0),D0
CMP.W #$0402,D0
BGT SET_MODE
MOVE.W OLD_REZ,D7
BSR SETMODE
BRA OK_FOR_MODE
SET_MODE
MOVE.W OLD_REZ,-(A7)
MOVE.W #$58,-(A7)
TRAP #14
ADDQ.L #4,A7
OK_FOR_MODE
LEA OLD_PHYS,A0
MOVE.B 1(A0),$FFFF8201.W
MOVE.B 2(A0),$FFFF8203.W
MOVE.B 3(A0),$FFFF820D.W
MOVE.L (A0),$44E.W
ELSE
MOVE.W OLD_REZ,-(A7)
MOVE.W #3,-(A7)
MOVE.L OLD_PHYS,-(A7)
MOVE.L OLD_PHYS,-(A7)
MOVE.W #5,-(A7)
TRAP #14
LEA 14(A7),A7
ENDC
IFEQ DEBUG
SYNCRO
LEA OLD_PAL,A0
MOVEQ #1,D0
BSR FADE_IN256
ENDC
MOVE.W OLD_484,$484.W
RTS
NEXT_LEVEL
IFEQ DEMO
BSR LOAD_LEVEL
BSR AFF_TET
CMP.W #4*10,LEV_PTR
BNE.S GO_ON_THIS_LEVEL
MOVE.W #0,LEV_PTR
GO_ON_THIS_LEVEL
ADDQ.W #1,CUR_LEVEL
MOVE.W CUR_LEVEL,D7
LEA CASE_LEVEL,A0
CASE_1_2_3
CMP2.B (A0),D7
BCS.S TO_4_5
MOVE.W #3,WAIT_Y
MOVE.W #3,WAIT_Y_SAVE
MOVE.W #2,INC_Y
RTS
TO_4_5
ADDQ.L #2,A0
CMP2.B (A0),D7
BCS.S TO_7
MOVE.W #2,WAIT_Y
MOVE.W #2,WAIT_Y_SAVE
MOVE.W #2,INC_Y
RTS
TO_7
CMP.W #7,D7
BNE.S TO_9
MOVE.W #2,WAIT_Y
MOVE.W #2,WAIT_Y_SAVE
MOVE.W #2,INC_Y
ADDQ.W #1,NB_PIECE
RTS
TO_9
CMP.W #9,D7
BNE.S TO_8
MOVE.W #1,WAIT_Y
MOVE.W #1,WAIT_Y_SAVE
MOVE.W #2,INC_Y
ADDQ.W #1,NB_PIECE
RTS
TO_8
CMP.W #8,D7
BNE.S TO_6
MOVE.W #2,WAIT_Y
MOVE.W #2,WAIT_Y_SAVE
SUBQ.W #1,NB_PIECE
MOVE.W #2,INC_Y
RTS
TO_6
CMP.W #6,D7
BNE.S TO_RIEN
MOVE.W #3,WAIT_Y
MOVE.W #3,WAIT_Y_SAVE
ADDQ.W #1,NB_PIECE
MOVE.W #2,INC_Y
TO_RIEN
MOVE.W #1,WAIT_Y
MOVE.W #1,WAIT_Y_SAVE
MOVE.W #2,INC_Y
ENDC
RTS
AFF_FOND
BSR WAIT_VBL
LEA FOND2,A0
MOVE.L ECRANRO,A1
ADD.L #$3F700,A1
MOVEQ #73,D0
LOOP_H_FOND
MOVEQ #(320/4)-1,D1
LOOP_W_FOND
MOVE.L (A0)+,(A1)+
DBRA D1,LOOP_W_FOND
LEA 320(A1),A1
DBRA D0,LOOP_H_FOND
MOVE.L ECRANRO,A1
MOVE.L #FOND2,A2
MOVE.L A2,A3
MOVE.L A2,A6
LEA 320-48(A6),A6
MOVE.L A6,D6
ADD.L #(640*480)-(74*640)-(50*640),A1
MOVE.L A1,A4
MOVE.L A1,A5
LEA 320-48(A5),A5
MOVE.L A5,D5
MOVEQ #8,D1
LOOP_COPY_F
MOVEQ #50,D0
LOOP_COPY2
REPT 12
MOVE.L (A2)+,(A1)+
MOVE.L (A6)+,(A5)+
ENDR
LEA 640-48(A1),A1
LEA 320-48(A2),A2
LEA 640-48(A5),A5
LEA 320-48(A6),A6
DBRA D0,LOOP_COPY2
MOVE.L A3,A2
MOVE.L A4,A1
MOVE.L D6,A6
MOVE.L D5,A5
MOVE.L D1,D7
MULU #50*640,D7
SUB.L D7,A1
SUB.L D7,A5
DBRA D1,LOOP_COPY_F
LEA TITLE,A0
MOVE.L ECRANRO,A1
LEA 320(A1),A1
MOVE.L #109,D0
LOOP_H_FOND2
MOVEQ #(320/4)-1,D1
LOOP_W_FOND2
MOVE.L (A0)+,(A1)+
DBRA D1,LOOP_W_FOND2
LEA 320(A1),A1
DBRA D0,LOOP_H_FOND2
LEA -16(A1),A1
MOVE.L #89,D0
LOOP_H_FOND22
MOVEQ #(320/4)-1,D1
LOOP_W_FOND22
MOVE.L (A0)+,(A1)+
DBRA D1,LOOP_W_FOND22
LEA 320(A1),A1
DBRA D0,LOOP_H_FOND22
RTS
AFF_SPRT
MOVE.L SPRITE,A0
MOVE.L ECRANRO_TAB,A1
ADD.L OFFSET,A1
MOVEQ #31,D0
LOOP_AFF
REPT 8
MOVE.L (A0)+,(A1)+
ENDR
LEA 640-32(A1),A1
DBRA D0,LOOP_AFF
RTS
AFF_SPRT_M
MOVE.L SPRITE,A0
MOVE.L ECRANRO_TAB,A1
MOVE.L MASK,A2
ADD.L OFFSET,A1
MOVEQ #25,D0
LOOP_AFF_M
MOVE.W (A2)+,D1
REPT 8
MOVE.W (A0)+,D2
AND.W D1,(A1)
OR.W D2,(A1)+
ENDR
MOVE.W (A2)+,D1
REPT 8
MOVE.W (A0)+,D2
AND.W D1,(A1)
OR.W D2,(A1)+
ENDR
LEA 640-32(A1),A1
DBRA D0,LOOP_AFF_M
RTS
SAVE_FOND_D
MOVE.L #SAVE,A0
MOVE.L ECRANRO_TAB,A1
ADD.L OFFSET,A1
MOVEQ #31,D0
LOOP_SAVE_D
REPT 8
MOVE.L (A1)+,(A0)+
ENDR
LEA 640-32(A1),A1
DBRA D0,LOOP_SAVE_D
RTS
SAVE_FOND_G
MOVE.L #SAVE+(32*32),A0
MOVE.L ECRANRO_TAB,A1
ADD.L OFFSET,A1
MOVEQ #31,D0
LOOP_SAVE_G
REPT 8
MOVE.L (A1)+,(A0)+
ENDR
LEA 640-32(A1),A1
DBRA D0,LOOP_SAVE_G
RTS
AFF_SPRT_NEXT
MOVE.L SPRITE,A0
MOVE.L ECRANRO_TAB,A1
ADD.L OFFSET,A1
MOVEQ #31,D0
LOOP_AFF_NEXT2
REPT 8
MOVE.L (A0)+,D6
MOVE.L (A1),D7
OR.L D6,D7
MOVE.L D7,(A1)+
ENDR
LEA 640-32(A1),A1
DBRA D0,LOOP_AFF_NEXT2
RTS
RANDOM
* D7=NB DE RANDOM
* RANDOM (D7) PAR EXEMPLE
MOVEM.L D0-D6/A0-A6,-(A7)
MOVE.L #255,D3
MOVE.L D7,D2
*ADDQ.L #1,D2
DIVU.W D2,D3
MOVE.W #$11,-(A7)
TRAP #14
ADDQ.L #2,A7
AND.L #$000000FF,D0
DIVU D3,D0
ADDQ.W #1,D0
CMP.W D7,D0
BLE.S CONT_RAND
MOVE.W #1,D0
CONT_RAND
MOVE.W D0,D7
MOVEM.L (A7)+,D0-D6/A0-A6
RTS
INIT
LEA DECIMAL,A0
LEA DECIM_G_O,A1
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A1)+
MOVE.L #0,(A1)+
MOVE.L #0,(A1)+
MOVE.L #0,(A1)+
MOVE.W #0,CUR_LEVEL
MOVE.L #0,SCORE
MOVE.W #0,NB_EXPL
MOVE.W #0,PTR_POINT
MOVE.W #3,WAIT_Y
MOVE.W #3,WAIT_Y_SAVE
MOVE.W #2,INC_Y
MOVE.W #18,LINE_EXP
MOVE.W #1,COL_EXP
MOVE.W #0,LEVEL
MOVE.W #0,CUR_DUBS
IFEQ DEMO
CMP.W #1,DIFICULT
BNE.S CONT_INIT_1
MOVE.W #4,NB_PIECE
CONT_INIT_1 CMP.W #2,DIFICULT
BNE.S CONT_INIT_2
MOVE.W #5,NB_PIECE
CONT_INIT_2 CMP.W #3,DIFICULT
BNE.S CONT_INIT_3
MOVE.W #6,NB_PIECE
CONT_INIT_3
ELSE
CMP.W #1,DIFICULT
BNE.S CONT_INIT_1
MOVE.W #6,NB_PIECE
CONT_INIT_1 CMP.W #2,DIFICULT
BNE.S CONT_INIT_2
MOVE.W #7,NB_PIECE
CONT_INIT_2 CMP.W #3,DIFICULT
BNE.S CONT_INIT_3
MOVE.W #8,NB_PIECE
CONT_INIT_3
ENDC
LEA TABLEAU,A0
LEA TAB_VIDE,A1
MOVEQ #(180/4)-1,D0
LOOP_INIT_TAB
MOVE.L (A1)+,(A0)+
DBRA D0,LOOP_INIT_TAB
MOVE.W NB_PIECE,D7
BSR RANDOM * RANDOM(4)
MOVE.B D7,CUR_PIECE
MOVE.W NB_PIECE,D7
BSR RANDOM * RANDOM(4)
MOVE.B D7,CUR_PIECE+1
REDO_3
MOVE.W NB_PIECE,D7
BSR RANDOM * RANDOM(4)
MOVE.B D7,CUR_PIECE+2
MOVE.B CUR_PIECE,D0
MOVE.B CUR_PIECE+1,D1
CMP.B D0,D1
BNE OK_INIT
MOVE.B CUR_PIECE+2,D0
CMP.B D0,D1
BEQ REDO_3
OK_INIT
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE+1
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE+2
MOVE.W #4,CUR_COLONE
MOVE.W #3,CUR_LIGNE
MOVE.L #3*32+48,CUR_X
MOVE.L #0,CUR_Y
**** TO DEBUG *****
IFNE DEBUG
MOVE.B #1,CUR_PIECE
MOVE.B #2,CUR_PIECE+1
MOVE.B #15,CUR_PIECE+2
MOVE.B #1,NEXT_PIECE
MOVE.B #11,NEXT_PIECE+1
MOVE.B #15,NEXT_PIECE+2
ENDC
LEA TAB_DIF_LEV,A0
MOVE.W DIFICULT,D0
SUBQ #1,D0
LEA TAB_CHG_LEV,A1
MOVE.L (A0,D0*4),(A1)
RTS
WAIT_VBL
IFEQ DEBUG
MOVE.W #0,OK
W_VBL
CMP.W #1,OK
BNE.S W_VBL
ENDC
RTS
GET_CHAR
MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.W #$FF,-(A7)
MOVE.W #$6,-(A7)
TRAP #1
ADDQ.L #4,A7
SWAP D0
MOVE.B D0,KEY
MOVE.B D0,KEY_SAVE
CMP.B #0,J_FLAG
BEQ NOT_JOY
MOVE.B J_FLAG,KEY
MOVE.B J_FLAG,KEY_SAVE
MOVE.B #0,J_FLAG
NOT_JOY
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
GET_CHAR2
MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.W #$FF,-(A7)
MOVE.W #$6,-(A7)
TRAP #1
ADDQ.L #4,A7
MOVE.B D0,KEY
MOVE.B D0,KEY_SAVE
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
COLONE_TO_X
MOVEQ #0,D0
MOVE.W CUR_COLONE,D0
MULU.W #32,D0
ADD.W #16,D0
MOVE.L D0,CUR_X
RTS
AFF_PIECE
MOVEQ #0,D0
MOVE.L D0,D1
MOVE.L D0,D2
MOVE.L D0,D3
LEA TAB_SPR,A4
LEA CUR_PIECE,A0
MOVE.B (A0)+,D0
MOVE.B (A0)+,D1
MOVE.B (A0),D2
MOVE.L (A4,D0.W*4),SPRITE
MOVE.L CUR_Y,D3
MULU #640,D3
ADD.L CUR_X,D3
MOVE.L D3,OFFSET
BSR AFF_SPRT
MOVE.L (A4,D1.W*4),SPRITE
ADD.L #640*32,D3
MOVE.L D3,OFFSET
BSR AFF_SPRT
MOVE.L (A4,D2.W*4),SPRITE
ADD.L #640*32,D3
MOVE.L D3,OFFSET
BSR AFF_SPRT
RTS
AFF_NEXT
MOVEM.L D0-D7/A0-A6,-(A7)
LEA NEXT,A0
MOVE.L ECRANRO,A1
LEA 16*640(A1),A1
MOVEQ #97,D0
LOOP_CADRE
REPT 8
MOVE.L (A0)+,(A1)+
ENDR
LEA 640-32(A1),A1
DBRA D0,LOOP_CADRE
MOVEQ #0,D0
MOVE.L D0,D1
MOVE.L D0,D2
MOVE.L D0,D3
LEA TAB_SPR,A4
LEA NEXT_PIECE,A0
MOVE.B (A0)+,D0
MOVE.B (A0)+,D1
MOVE.B (A0),D2
MOVE.L (A4,D0.W*4),A2
MOVE.L NEXT_X_Y,D3
MOVE.L D3,OFFSET
MOVE.L A2,SPRITE
BSR AFF_SPRT_NEXT
MOVE.L (A4,D1.W*4),A2
ADD.L #640*32,D3
MOVE.L D3,OFFSET
MOVE.L A2,SPRITE
BSR AFF_SPRT_NEXT
MOVE.L (A4,D2.W*4),A2
ADD.L #640*32,D3
MOVE.L D3,OFFSET
MOVE.L A2,SPRITE
BSR AFF_SPRT_NEXT
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
EFF_PIECE
MOVE.L ECRANRO_TAB,A6
MOVE.L CUR_Y,D4
CMP.L #96,D4
BLT EFF_CLIP
CMP.B #$4D,KEY_SAVE
BEQ.S EFF_TOTAL
CMP.B #$4B,KEY_SAVE
BEQ.S EFF_TOTAL
CMP.B #$50,KEY_SAVE
BEQ.S DO_EFF_FALL
ICI_EFF
SUBQ.L #2,D4
MULU.W #640,D4
ADD.L CUR_X,D4
ADD.L D4,A6
MOVEQ #2,D0
DO_EFF
MOVEQ #0,D6
LOOP_EFF_P
REPT 8
MOVE.L D6,(A6)+
ENDR
LEA 640-32(A6),A6
DBRA D0,LOOP_EFF_P
MOVE.W #0,GD_FLAG
RTS
EFF_TOTAL
SUBQ.L #2,D4
MULU.L #640,D4
ADD.L CUR_X,D4
ADD.L D4,A6
CMP.W #1,GD_FLAG
BNE.S OK_TOTAL
CMP.W #1,INC_Y
BGE PLUS_EFF
MOVEQ #96+1,D0
BRA.S DO_EFF
PLUS_EFF
MOVEQ #96+1,D0
BRA.S DO_EFF
OK_TOTAL
MOVEQ #96+1,D0
BRA.S DO_EFF
DO_EFF_FALL
MULU.W #640,D4
ADD.L CUR_X,D4
ADD.L D4,A6
MOVEQ #31,D0
BRA DO_EFF
EFF_CLIP
CMP.B #$4D,KEY_SAVE
BEQ.S EFF_PART
CMP.B #$4B,KEY_SAVE
BEQ.S EFF_PART
CMP.B #$50,KEY_SAVE
BEQ.S DO_EFF_FALL
RTS
EFF_PART
MOVE.L ECRANRO,A6
MOVE.L CUR_Y,D0
ADD.L CUR_X,A6
BRA DO_EFF
NEXT_TO_CUR
MOVE.W #0,NO_ROTAT
******* TO DEBUG ********
*MOVE.B #1,CUR_PIECE
*MOVE.B #1,CUR_PIECE+1
*MOVE.B #15,CUR_PIECE+2
*MOVE.B #16,CUR_PIECE+2
*MOVE.B #1,NEXT_PIECE
*MOVE.B #1,NEXT_PIECE+1
*MOVE.B #16,NEXT_PIECE+2
*MOVE.B #17,NEXT_PIECE+2
*RTS
MOVE.L NEXT_PIECE,D0
MOVE.L D0,CUR_PIECE
MOVE.B CUR_PIECE+2,D0
CMP.B #10,D0 * ETOILE EMPECHE ROTATION
BNE.S CONT_NEXT
MOVE.W #1,NO_ROTAT
CONT_NEXT
LEA TAB_VAL_RAND,A4
MOVE.W #10,D7
BSR RANDOM
CMP2.B (A4),D7
BCS.S DO_8_10
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE+1
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE+2
RTS
DO_8_10
ADDQ.L #2,A4
CMP2.B (A4),D7
BCS BUG
MOVE.W #13,D7
BSR RANDOM
CMP.B #1,D7
BEQ.S DO_1_2
CMP.B #2,D7
BNE.S NOT_1_2
DO_1_2
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE
MOVE.B D7,NEXT_PIECE+1
MOVE.B D7,NEXT_PIECE+2
RTS
NOT_1_2
CMP.B #3,D7
BEQ.S DO_3_10
CMP.B #10,D7
BNE.S NOT_3_10
DO_3_10
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE+1
MOVE.W CUR_DUBS,D0
ADD.W #13,D0
MOVE.B D0,NEXT_PIECE+2
ADDQ.W #1,CUR_DUBS
CMP.W #4,CUR_DUBS
BNE.S NOT_ALL_DUBS
MOVE.W #0,CUR_DUBS
NOT_ALL_DUBS
RTS
NOT_3_10
CMP.B #4,D7
BNE.S NOT_4
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE+1
MOVE.B #12,NEXT_PIECE+2
RTS
NOT_4
CMP.B #5,D7
BEQ.S DO_5_8_12
CMP.B #8,D7
BEQ.S DO_5_8_12
CMP.B #12,D7
BNE.S NOT_5_8_12
DO_5_8_12
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE+1
MOVE.B #9,NEXT_PIECE+2
RTS
NOT_5_8_12
CMP.B #6,D7
BNE.S NOT_6
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE+1
MOVE.B #11,NEXT_PIECE+2
RTS
NOT_6
CMP.B #11,D7
BNE.S NOT_11
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE+1
MOVE.B #17,NEXT_PIECE+2
RTS
NOT_11
CMP.B #7,D7
BEQ.S DO_7_9_13
CMP.B #9,D7
BEQ.S DO_7_9_13
CMP.B #13,D7
BNE.S NOTHING
DO_7_9_13
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE
MOVE.W NB_PIECE,D7
BSR RANDOM
MOVE.B D7,NEXT_PIECE+1
MOVE.B #10,NEXT_PIECE+2
NOTHING
RTS
BUG
JSR WAIT_VBL
CMP.B #$01,KEY
BNE.S BUG
BRA FIN
TEST_HAUT
LEA TABLEAU,A0
MOVEQ #0,D0
MOVEQ #1,D1
HAUT_LOOP
MOVE.W D0,D2
MOVE.W D1,D3
MULU.W #9,D2
ADD.W D3,D2
CMP.B #0,(A0,D2.W)
BNE.S OK_TOP_OF_LINE
ADDQ.W #1,D1
CMP.W #8,D1
BNE HAUT_LOOP
ADDQ.W #1,D0
MOVEQ #1,D1
CMP.W #19,D0
BEQ.S OK_TOP_OF_LINE
BRA HAUT_LOOP
OK_TOP_OF_LINE
MOVE.W D0,TOP_OF_LINE
RTS
*********************************************
*** BA MAINTENANT FAUT COMPTER LES POINTS ***
*********************************************
COMPTE_POINT
MOVEQ #0,D0
MOVE.L D0,D1
MOVE.L D1,D2
MOVE.L D1,D3
MOVE.L D1,D4
MOVE.L D1,D5
MOVE.L D1,D6
MOVE.L D1,D7
LEA PIECE,A0
MOVE.L #(10*20)-1,D0
COMPTE_PIECE
MOVE.B (A0)+,D7 * C'EST LA PIECE DU CON !!!
CMP.B #0,D7 * BEIN Y'EN A PLUS
BEQ REDONDANT
ADDQ.W #1,D6 * NB DE PIECE NANANANANERE
DBRA D0,COMPTE_PIECE
MULU.L D6,D6 * (NB_PIECE^2)
MULU.L #10,D6 * (( " )*10)
MOVEQ #0,D5
MOVE.W DIFICULT,D5
MULU.L D5,D6 * (((NB_PIECE^2)*10)*DIFICULTE)
REDONDANT
MOVEQ #0,D3
MOVE.W REDONDANCE,D3
MULU.L D3,D6 * (((NB_PIECE^2)*10)*DIFICULTE)*REDONDANCE
ADD.L D5,D6
ADDQ.L #1,D6
IFNE DEBUG
ADD.L #10,D6
ENDC
ADD.L D6,SCORE
MOVEQ #0,D6
MOVE.W NB_MUR,D6
MULU.L #3219,D6
ADD.L D6,SCORE
CMP.W #19,TOP_OF_LINE
BNE NOT_EMPTY
ADD.L #30123,SCORE
NOT_EMPTY
MOVE.W #0,REDONDANCE
MOVE.W #0,NB_MUR
PROUT
* ON VA TRANSFORMER LE SCORE EN DECIMAL*
LEA DECIMAL,A0
MOVE.L SCORE,D0
CMP.L #10,D0
BGE.S SUP_10
ADD.B #'0',D0
MOVE.B D0,(A0)+
BRA.S FIN_DIGIT
SUP_10
MOVE.L #1000000,D2
MOVEQ #6,D7 * SUR 7 CHIFFRES
LOOP
MOVEQ #0,D1
DIVU.L D2,D1:D0
ADD.B #'0',D0
MOVE.B D0,(A0)+
MOVE.L D1,D0
DIVU.L #10,D2
DBRA D7,LOOP
FIN_DIGIT
BSR AFF_SCORE * HÉ OUAIS, ENFIN CE PUTAIN
* DE SCORE QUE TOUT LE
* MODE ME RÉCLAME DEPUIS
* LE DEBUT, BEIN LE VOILA !
LEA PIECE,A0
MOVEQ #(10*20/4)-1,D0
CLR_PIECE
MOVE.L #0,(A0)+
DBRA D0,CLR_PIECE
IFEQ DEMO
MOVE.W PTR_POINT,D7
LEA TAB_CHG_LEV,A5
MOVE.L (A5),A5
MOVE.W (A5,D7.W*2),D1
MOVE.W NB_EXPL,D2
CMP.L D2,D1
BGT.S NO_CHANGE_LEVEL
BSR NEXT_LEVEL
ADDQ.W #1,PTR_POINT
ENDC
NO_CHANGE_LEVEL
MOVE.W #0,NB_MUR
RTS
GET_ALL_PIECES
* THE_PIECE = PIECE A SCANNER
* SCANNED = DEBUT DU TABLEAU OU RETROUVER LES PIECES
SAVE D0-D7/A0-A6
MOVE.B THE_PIECE,D7 * C'EST CELLE LA QU'ON VEUT
LEA TABLEAU,A5
LEA SCANNED,A6
MOVEQ #18,D0 * 18 EME LIGNE
MOVEQ #1,D1 * 1 ERRE COLONE
LOOP_GET
MOVE.W D0,D2
MULU.W #9,D2
ADD.W D1,D2
MOVE.B (A5,D2.W),D6
CMP.B D7,D6
BNE CONT_GET
MOVE.W D0,(A6)+
MOVE.W D1,(A6)+
ADDQ.W #1,NB_SCANNED
CONT_GET
ADDQ.W #1,D1 *COLONE SUIVANTE
CMP.W #8,D1
BNE.S OK_GET_COL
MOVE.W #1,D1
SUBQ.W #1,D0
OK_GET_COL
CMP.W #1,D0
BEQ FIN_GET_PIECE
BRA LOOP_GET
FIN_GET_PIECE
MOVE.L #0,(A6)+
LOAD D0-D7/A0-A6
RTS
AFF_SCORE
MOVEM.L D0-D7/A0-A6,-(A7)
MOVEQ #0,D0
MOVE.L D0,D1
MOVE.L D0,D2
MOVE.L D0,D3
MOVE.L D0,D4
MOVE.L D0,D5
MOVE.L D0,D6
MOVE.L D0,D7
MOVE.L #(640*208)+(640-32),D3
LEA DECIMAL,A2
LEA TAB_DIGIT,A3
PURGE_0
MOVE.B (A2)+,D1
CMP.B #0,D1
BEQ PLUS_DIGIT
CMP.B #'0',D1
BEQ PURGE_0
SUBQ.L #1,A2
MOVE.L A2,A6
GET_LAST
CMP.B #0,(A2)+
BNE GET_LAST
SUBQ.L #2,A2
MOVE.B (A2),D1
LOOP_AFF_SCORE
SUB #'0',D1
MOVE.L (A3,D1.W*4),SPRITE *ON A LE SPRITE
MOVE.L D3,OFFSET
BSR AFF_SPRT
CMP.L A2,A6
BEQ PLUS_DIGIT
SUBQ.L #1,A2
MOVE.B (A2),D1
SUB.L #32,D3
BRA LOOP_AFF_SCORE
PLUS_DIGIT
LEA DECIM_G_O,A1
LEA DECIMAL,A0
MOVE.L (A0),(A1)+
MOVE.L #0,(A0)+
MOVE.L (A0),(A1)+
MOVE.L #0,(A0)+
MOVE.L (A0),(A1)+
MOVE.L #0,(A0)+
MOVE.L (A0),(A1)+
MOVE.L #0,(A0)+
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
CLS
MOVE.L ECRANRO,A1
MOVE.L #(640*480/4),D0
CLS_LOOP
MOVE.L #0,(A1)+
SUBQ.L #1,D0
BEQ FIN_CLS
BRA CLS_LOOP
FIN_CLS
RTS
STOP_GAME
BSR WAIT_VBL
GAME_OVER
CMP.W #1,SOUND
BNE NO_G_O_SPL
MOVE.W #2,THE_SPL *FIOUIPZ.RAW
BSR PLAY_SPE
WAIT_G_O_SPL
MOVE.W $FFFF8900.W,D0
CMP.W #0,D0
BNE WAIT_G_O_SPL
NO_G_O_SPL
IFNE MUSIC
BSR MUSIC_OFF
ENDC
MOVE.W DIFICULT,D0
SUBQ #1,D0
LEA TAB_HS_TAB,A0
MOVE.L (A0,D0.W*4),A0 *TABLEAU HIGHSCORE CUR DIF
MOVE.L SCORE,D0
LEA (16*10)-4(A0),A0
MOVE.L (A0),D1
CMP.L D1,D0
BLE NOT_IN_HS
IFEQ DEBUG
MOVEQ #1,D0
BSR FADE_OUT256
ENDC
MOVE.L #G_OVER,A0
MOVE.L ECRANRO,A1
BSR DEPACK
MOVEQ #0,D1
MOVEQ #0,D2
MOVE.L #(640*288)+(640-224),D3
LEA DECIM_G_O,A2
LEA TAB_FONTE,A3
PURGE_0_G_O
MOVE.B (A2)+,D1
CMP.B #0,D1
BEQ PLUS_DIGIT_G_O
CMP.B #'0',D1
BEQ PURGE_0_G_O
SUBQ.L #1,A2
MOVE.L A2,A6
GET_LAST_G_O
CMP.B #0,(A2)+
BNE GET_LAST_G_O
SUBQ.L #2,A2
MOVE.B (A2),D1
LOOP_AFF_SCORE_G_O
SUB #'0',D1
MOVE.L (A3,D1.W*4),A4
MOVE.L ECRANRO,A5
ADD.L D3,A5
MOVEQ #31,D7
G_O_SCORE
REPT 8
MOVE.L (A4)+,(A5)+
ENDR
LEA 640-32(A4),A4
LEA 640-32(A5),A5
DBRA D7,G_O_SCORE
CMP.L A2,A6
BEQ PLUS_DIGIT_G_O
SUBQ.L #1,A2
MOVE.B (A2),D1
SUB.L #32,D3
BRA LOOP_AFF_SCORE_G_O
PLUS_DIGIT_G_O
IFEQ DEBUG
MOVE.L #PAL,A0
MOVEQ #1,D0
BSR FADE_IN256
ENDC
MOVE.W #0,KEY
MOVE.W #0,PTR_CUR
**************************************
**** ICI ON PRENDS LE NOM DES CONS ***
**************************************
LEA CUR_NAME,A2 * ON, VIDE LA MERDE
MOVE.L #0,(A2)+
MOVE.L #0,(A2)+
MOVE.L #0,(A2)+
LEA CUR_NAME,A2
LOOP_G_O
MOVE.L ECRANRO,A5 * MY SCR
ADD.L #156*640+160,A5
MOVE.W PTR_CUR,D0
LSL.L #5,D0
ADD.L D0,A5
BSR GET_CHAR2
CMP.B #$D,KEY * CR
BEQ FIN_LOOP_G_O
CMP.B #0,KEY
BEQ LOOP_G_O
CMP.B #$20,KEY * SPC
BNE CONT_FONTE
MOVE.B #' ',(A2)
ADDQ.W #1,PTR_CUR
CMP.W #9,PTR_CUR
BLE CONT_LOOP_G_O
MOVE.W #9,PTR_CUR
CONT_LOOP_G_O
MOVE.L #NULL,A1
MOVEQ #31,D0
LOOP_SPC
REPT 8
MOVE.L (A1)+,(A5)+
ENDR
LEA 640-32(A5),A5
DBRA D0,LOOP_SPC
CMP.W #9,PTR_CUR
BEQ BOUT_SPC
ADDQ.L #1,A2
BOUT_SPC
BRA LOOP_G_O
CONT_FONTE CMP.B #$8,KEY * BACKSPACE
BNE NOT_BACK
CMP.W #9,PTR_CUR
BGE BOUT_BACK
CMP.W #0,PTR_CUR
BEQ BOUT_BACK
SUBQ.L #1,A2
BOUT_BACK
MOVE.B #0,(A2)
CMP.W #1,B_FLAG
BEQ CONT_LOOP_BACK
CMP.W #9,PTR_CUR
BEQ CONT_LOOP_BACK
SUBQ.W #1,PTR_CUR
CMP.W #-1,PTR_CUR
BEQ PLUS_BACK
SUB.L #32,A5
CONT_LOOP_BACK
MOVE.W #0,B_FLAG
MOVE.L #NULL,A1
MOVEQ #31,D0
LOOP_BACK
REPT 8
MOVE.L (A1)+,(A5)+
ENDR
LEA 640-32(A5),A5
DBRA D0,LOOP_BACK
CMP.W #9,PTR_CUR
BNE CONT_G_O
MOVE.W #8,PTR_CUR
MOVE.W #1,B_FLAG
CONT_G_O
BRA LOOP_G_O
PLUS_BACK
MOVE.W #0,PTR_CUR
BRA LOOP_G_O
NOT_BACK
CMP.B #$30,KEY
BLT LOOP_G_O
CMP.B #$5A,KEY
BLE OK_FONTE
SUB.B #$20,KEY
OK_FONTE
MOVEQ #0,D0
LEA TAB_FONTE,A0
MOVE.B KEY,D0
MOVE.B D0,(A2)
CMP.W #9,PTR_CUR
BGE THE_BOUT
CMP.W #1,B_FLAG
BEQ THE_BOUT_2
ADDQ.L #1,A2
BRA THE_BOUT
THE_BOUT_2
ADD.L #32,A5
THE_BOUT
SUB.W #$30,D0
MOVE.L (A0,D0.W*4),A1 *THE SPRITE
MOVEQ #31,D7
LOOP_AFF_FONTE
REPT 8
MOVE.L (A1)+,(A5)+
ENDR
LEA 640-32(A1),A1
LEA 640-32(A5),A5
DBRA D7,LOOP_AFF_FONTE
ADDQ.W #1,PTR_CUR
CMP.W #9,PTR_CUR
BLE GO_LOOP_G_O
MOVE.W #9,PTR_CUR
GO_LOOP_G_O
MOVE.W #0,B_FLAG
BRA LOOP_G_O
FIN_LOOP_G_O
***************************************
**** ICI ON VA REMPLIR LE HIGHSCORE ***
***************************************
MOVE.W DIFICULT,D0
SUBQ #1,D0
LEA TAB_HS_TAB,A0
MOVE.L (A0,D0.W*4),A0 *TABLEAU HIGHSCORE CUR DIF
MOVE.L A0,A1
MOVEQ #0,D6
MOVE.L SCORE,D7
LOOP_HS
MOVE.L 12(A0),D5 * LE SCORE DANS LE TABLEAU
CMP.L D7,D5
BLT PUT_ICI
LEA 16(A0),A0
ADDQ.W #1,D6
CMP.W #10,D6
BEQ NOT_IN_HS
BRA LOOP_HS
PUT_ICI
MOVE.L D6,D5
ADDQ #1,D6
MOVE.W #10,D7
CMP.W D6,D7
BEQ THE_LAST
MOVE.L A1,A0 *TAB HS
ADD.L #16*8,A0 * FIN -1
MOVE.L A0,A2
ADD.L #16,A2
LOOP_INSERT
MOVE.L (A0),(A2)
MOVE.L 4(A0),4(A2)
MOVE.L 8(A0),8(A2)
MOVE.L 12(A0),12(A2)
SUBQ #1,D7
SUB.L #16,A0
SUB.L #16,A2
CMP.W D7,D6
BNE LOOP_INSERT
THE_LAST
MULU.W #16,D5
ADD.L D5,A1 *LA PLACE DANS LE TAB
LEA CUR_NAME,A2
PUT_NAME
MOVE.L (A2)+,(A1)+
MOVE.L (A2)+,(A1)+
MOVE.L (A2)+,(A1)+
MOVE.L SCORE,(A1)+
IFEQ DEMO
BSR CRYPT
FILE_OPEN READ,F_NAME_HS
MOVE.W D0,F_HANDLE
FILE_WRITE #TAB_H_SCORE_1,#16*30,F_HANDLE
FILE_CLOSE F_HANDLE
BSR CRYPT
ENDC
NOT_IN_HS
MOVE.W #0,FADE_FLAG
BSR.S AFF_H_SCORE
BRA DO_MENU
AFF_H_SCORE
MOVE.W #0,NUM_NOM
CMP.W #1,FADE_FLAG
BEQ.S NO_FADE
IFEQ DEBUG
MOVEQ #1,D0
BSR FADE_OUT256
ENDC
NO_FADE
BSR CLS
MOVE.L ECRANRO,A4 * MY SCR
ADD.L #16*640+192,A4
LEA TXT_HS,A1
LEA FIN_TXT_HS,A2
MOVE.W DIFICULT,D0
ADD.L #$30,D0
MOVE.B D0,-1(A2)
LOOP_TXT
CMP.L A1,A2
BEQ PLUS_TXT
MOVEQ #0,D0
LEA TAB_FONTE,A0
MOVE.B (A1)+,D0
CMP.B #$20,D0
BNE NOT_SPACE
ADD.L #32,A4
BRA LOOP_TXT
NOT_SPACE
CMP.B #13,D0
BNE NOT_RETURN
MOVE.L ECRANRO,A4 * MY SCR
ADD.L #64*640+160,A4
BRA LOOP_TXT
NOT_RETURN
SUB.W #$30,D0
MOVE.L (A0,D0.W*4),A3 *THE SPRITE
MOVE.L A4,A5
ADD.L #32,A4
MOVEQ #31,D7
LOOP_AFF_LETTRE
REPT 8
MOVE.L (A3)+,(A5)+
ENDR
LEA 640-32(A3),A3
LEA 640-32(A5),A5
DBRA D7,LOOP_AFF_LETTRE
BRA LOOP_TXT
PLUS_TXT
* BON BEIN FAUT L'AFFICHER MAINTENANT
MOVE.W DIFICULT,D0
SUBQ #1,D0
LEA TAB_HS_TAB,A0
MOVE.L (A0,D0.W*4),A2 *TABLEAU HIGHSCORE CUR DIF
MOVEQ #0,D5 * 1ST LETTER OF THE NAME
MOVE.L A2,A6
LEA TAB_FONTE,A0
MOVE.L ECRANRO,A4 * MY SCR
ADD.L #120*640,A4
AFF_NAME
MOVEQ #0,D0
MOVE.B (A2)+,D0
CMP.B #0,D0
BNE CONT_NAME
BRA NOW_SCORE
CONT_NAME
CMP.B #$20,D0
BNE CONT_NAME_2
ADD.L #32,A4
BRA AFF_NAME
CONT_NAME_2
SUB.W #$30,D0
MOVE.L (A0,D0.W*4),A3 *THE SPRITE
MOVE.L A4,A5
ADD.L #32,A4
MOVEQ #31,D6
LOOP_AFF_NAME
REPT 8
MOVE.L (A3)+,(A5)+
ENDR
LEA 640-32(A3),A3
LEA 640-32(A5),A5
DBRA D6,LOOP_AFF_NAME
BRA AFF_NAME
NOW_SCORE
LEA 12(A6),A2
LEA DECIMAL_HS,A3
MOVE.L (A2),D0
CMP.L #10,D0
BGE.S SUP_10_2
ADD.B #'0',D0
MOVE.B D0,(A3)+
BRA.S PLUS_DIGIT_2
SUP_10_2
MOVE.L #1000000,D2
MOVEQ #6,D7 * SUR 7 CHIFFRES
LOOP_D_HS
MOVEQ #0,D1
DIVU.L D2,D1:D0
ADD.B #'0',D0
MOVE.B D0,(A3)+
MOVE.L D1,D0
DIVU.L #10,D2
DBRA D7,LOOP_D_HS
PLUS_DIGIT_2
BSR AFF_SCORE_2
ADDQ.W #1,D5 * NB DE NOM
MOVE.W D5,NUM_NOM
CMP.B #10,D5
BEQ PLUS_DE_NOM
CONT_THE_NAME
LEA 16(A6),A6
MOVE.L A6,A2
MOVE.L ECRANRO,A4 * MY SCR
MULU.W #640*36,D5
ADD.L #640*120,D5
ADD.L D5,A4
MOVEQ #0,D5
MOVE.W NUM_NOM,D5
BRA AFF_NAME
PLUS_DE_NOM
CMP.W #1,FADE_FLAG
BEQ.S NO_FADE2
IFEQ DEBUG
MOVE.L #PAL,A0
MOVEQ #1,D0
BSR FADE_IN256
ENDC
BSR CLR_KEYB
NO_FADE2
MOVE.B #0,KEY
BSR GET_CHAR
CMP.B #0,KEY
BEQ NO_FADE2
RTS
AFF_SCORE_2
MOVEM.L D0-D7/A0-A6,-(A7)
MOVEQ #0,D0
MOVE.L D0,D1
MOVE.L D0,D2
MOVE.L D0,D3
MOVE.L D0,D4
MOVE.L D0,D5
MOVE.L D0,D6
MOVE.L D0,D7
MOVE.W NUM_NOM,D3
MULU.L #640*36,D3
ADD.L #(640*216)+(640-32),D3
ADD.L D5,A4
LEA DECIMAL_HS,A2
LEA TAB_DIGIT,A3
PURGE_0_2
MOVE.B (A2)+,D1
CMP.B #0,D1
BEQ PLUS_DIGIT_2
CMP.B #'0',D1
BEQ PURGE_0_2
SUBQ.L #1,A2
MOVE.L A2,A6
GET_LAST_2
CMP.B #0,(A2)+
BNE GET_LAST_2
SUBQ.L #2,A2
MOVE.B (A2),D1
LOOP_AFF_SCORE_2
SUB #'0',D1
MOVE.L (A3,D1.W*4),SPRITE *ON A LE SPRITE
MOVE.L D3,OFFSET
BSR AFF_SPRT
CMP.L A2,A6
BEQ PLUS_DIGIT_2_2
SUBQ.L #1,A2
MOVE.B (A2),D1
SUB.L #32,D3
BRA LOOP_AFF_SCORE_2
PLUS_DIGIT_2_2
LEA DECIMAL_HS,A0
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
PAUSE
MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.W #1,D1
LEA TAB_VIDE,A0
REDRAW_TAB
BSR REDRAW
ADDQ.W #1,D1
CMP.W #8,D1
BLT.S REDRAW_TAB
LEA PAUSE_SPRT,A0
MOVE.L ECRANRO,A1
ADD.L #(640*(480/2-56))+48,A1
BSR WAIT_VBL
MOVEQ #111,D0
AFF_PAUSE
MOVE.L #224/4-1,D1
AFF_P_LOOP
MOVE.L (A0)+,(A1)+
DBRA D1,AFF_P_LOOP
LEA (640-224)(A1),A1
DBRA D0,AFF_PAUSE
PAUSE_LOOP
BSR GET_CHAR
TST.B KEY
BEQ.S PAUSE_LOOP
MOVE.W #1,D1
LEA TABLEAU,A0
REDRAW_TAB_2
BSR REDRAW
ADDQ.W #1,D1
CMP.W #8,D1
BLT.S REDRAW_TAB_2
MOVEM.L D0-D7/A0-A6,-(A7)
BRA PLUS_PAUSE
DO_INTER
CMP.W #1,SOUND
BNE NO_INTER_SPL
MOVE.W #3,THE_SPL *INTER.RAW
BSR PLAY_SPE
NO_INTER_SPL
MOVEQ #0,D6
MOVE.L CUR_Y,D5
MULU.L #640,D5
MOVE.B SAVE_P2,D6
MULU.L #32,D6
MULU.W #640,D6
ADD.L D6,D5
ADD.L CUR_X,D5
MOVE.L D5,OFFSET
LEA TAB_SPR,A4
MOVEQ #2,D7
LOOP_INTER
MOVEQ #0,D5
MOVE.B SAVE_P1,D5
MOVE.L (A4,D5.W*4),SPRITE
BSR AFF_SPRT
REPT 8
BSR WAIT_VBL
ENDR
MOVEQ #0,D5
MOVE.B SAVE_P3,D5
MOVE.L (A4,D5.W*4),SPRITE
BSR AFF_SPRT
REPT 8
BSR WAIT_VBL
ENDR
DBRA D7,LOOP_INTER
RTS
AFF_ARROWS
MOVEQ #0,D0
MOVE.L D0,D1
MOVE.L D0,D2
MOVE.W OLD_ITEM,D1
MULU.L #55*640,D1
MOVE.L ARROW_OFFSET,D2
ADD.L D1,D2
MOVE.L D2,OFFSET
MOVE.L #SAVE,SPRITE * FOND FLECHE GAUCHE
BSR AFF_SPRT
ADD.L #640-32,OFFSET
MOVE.L #SAVE+(32*32),SPRITE * FOND FLECH DROITE
BSR AFF_SPRT
MOVEQ #0,D1
MOVE.W MENU_ITEM,D1
MULU.L #55*640,D1
MOVE.L ARROW_OFFSET,D2
ADD.L D1,D2
MOVE.L D2,OFFSET
BSR SAVE_FOND_D
MOVE.L #ARROW1,SPRITE
MOVE.L #ARROW1M,MASK
BSR AFF_SPRT_M
ADD.L #640-32,OFFSET
BSR SAVE_FOND_G
MOVE.L #ARROW2,SPRITE
MOVE.L #ARROW2M,MASK
BSR AFF_SPRT_M
MOVE.W MENU_ITEM,OLD_ITEM
FIN_ARROW
RTS
LITTLE_INIT
MOVE.W #5,OLD_ITEM
MOVE.W #1,DIFICULT
MOVE.W #0,SOUND * SOUNDTRACK PAR DEFAUT
MOVE.L #0,SCORE
LEA DECIMAL,A0
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
LEA DECIM_G_O,A0
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
MOVE.L #0,(A0)+
IFEQ DEMO
FILE_OPEN READ,F_NAME_HS
TST.W D0
BMI NO_FILE
MOVE.W D0,F_HANDLE
FILE_READ #TAB_H_SCORE_1,#16*30,F_HANDLE
FILE_CLOSE F_HANDLE
BSR CRYPT
ELSE
BRA NO_FILE
ENDC
OK_FILE
IFEQ DEBUG
SYNCRO
MOVEQ #1,D0
BSR FADE_OUT256
ENDC
MOVE.W $484.W,OLD_484
BCLR #0,$484
IFNE MUSIC
BSR INIT_PLAYER
ENDC
RTS
HIGHSCORE MOVE.W #1,FADE_FLAG
BSR AFF_H_SCORE
LEA MENU,A0
MOVE.L ECRANRO,A1
BSR DEPACK * ATOMIK DEPACK NANANANERE !!!
BSR AFF_ARROWS
BSR DO_DIFICULTY
BSR AFF_SOUND
BRA MENU_LOOP
DO_DIFICULTY
MOVE.W DIFICULT,D0
CMP.W #4,D0
BNE CONT_DO_DIF
MOVE.W #1,D0
CONT_DO_DIF
MOVE.W D0,DIFICULT
BSR WAIT_VBL
BSR REST_FOND_DIF
MOVE.W DIFICULT,D0
LEA TAB_DIF,A0
LEA TAB_DIF_M,A1
SUBQ #1,D0
MOVE.L (A0,D0.W*4),A0 *SPRITE DIFICULTY
MOVE.L (A1,D0.W*4),A2 *SPRITE DIFICULTY MASK
MOVE.L #300*640+320+160,OFFSET
MOVE.L ECRANRO_TAB,A1
ADD.L OFFSET,A1
MOVEQ #37,D0
LOOP_AFF_D
MOVE.W (A2)+,D1
REPT 8
MOVE.W (A0)+,D2
AND.W D1,(A1)
OR.W D2,(A1)+
ENDR
MOVE.W (A2)+,D1
REPT 8
MOVE.W (A0)+,D2
AND.W D1,(A1)
OR.W D2,(A1)+
ENDR
LEA 640-32(A1),A1
DBRA D0,LOOP_AFF_D
RTS
DO_SOUND
CMP.W #0,SOUND
BNE CONT_SOUND
MOVE.W #1,SOUND * EFFECTS
BRA AFF_SOUND
CONT_SOUND
MOVE.W #0,SOUND * SOUNDTRACK
AFF_SOUND
BSR WAIT_VBL
BSR REST_SOUND
LEA TAB_SOUND,A0
LEA TAB_S_MASK,A2
MOVE.W SOUND,D0
MOVE.L (A0,D0.W*4),A0 *HO! LE GROS SPRITE QUE VOILA
MOVE.L (A2,D0.W*4),A2 *HO! LE GROS MASK QUE VOILA
MOVE.L ECRANRO,A1 * MON ECRAN A MOI NA!
ADD.L #(262*640)+(640-272),A1
MOVEQ #31,D7
LOOP_SOUND
MOVE.L #(240/16)-1,D6
LOOP_SOUND2
MOVE.W (A2)+,D1 * MASK
REPT 8
MOVE.W (A0)+,D2
AND.W D1,(A1)
OR.W D2,(A1)+
ENDR
DBRA D6,LOOP_SOUND2
LEA (640-240)(A1),A1
DBRA D7,LOOP_SOUND
RTS
DO_INFO
IFEQ DEBUG
MOVEQ #1,D0
ENDC
MOVE.L #INFO,A0
MOVE.L ECRANRO,A1
BSR DEPACK
BSR CLR_KEYB
INFO_LOOP
MOVE.W #0,KEY
BSR GET_CHAR
CMP.B #0,KEY
BEQ INFO_LOOP
IFEQ DEBUG
MOVEQ #1,D0
ENDC
LEA MENU,A0
MOVE.L ECRANRO,A1
BSR DEPACK * ATOMIK DEPACK NANANANERE !!!
BSR CLR_KEYB
BSR AFF_ARROWS
BSR DO_DIFICULTY
BSR AFF_SOUND
BRA MENU_LOOP
SAVE_FOND_DIF
MOVE.L ECRANRO_TAB,A0
LEA SAVE_D,A1
ADD.L #300*640+320+160,A0
MOVEQ #38,D0
LOOP_F_DIF
REPT 8
MOVE.L (A0)+,(A1)+
ENDR
LEA 640-32(A0),A0
DBRA D0,LOOP_F_DIF
RTS
REST_FOND_DIF
MOVE.L ECRANRO_TAB,A0
LEA SAVE_D,A1
ADD.L #300*640+320+160,A0
MOVEQ #38,D0
LOOP_R_DIF
REPT 8
MOVE.L (A1)+,(A0)+
ENDR
LEA 640-32(A0),A0
DBRA D0,LOOP_R_DIF
RTS
SAVE_FOND_SOUND
MOVE.L ECRANRO,A0
LEA SAVE_S,A1
ADD.L #(262*640)+(640-272),A0
MOVEQ #31,D0
LOOP_F_SOUND
REPT (240/4)
MOVE.L (A0)+,(A1)+
ENDR
LEA 640-240(A0),A0
DBRA D0,LOOP_F_SOUND
RTS
REST_SOUND
MOVE.L ECRANRO,A0
LEA SAVE_S,A1
ADD.L #(262*640)+(640-272),A0
MOVEQ #31,D0
LOOP_R_SOUND
REPT (240/4)
MOVE.L (A1)+,(A0)+
ENDR
LEA 640-240(A0),A0
DBRA D0,LOOP_R_SOUND
RTS
TEST_OF_LINE
MOVEM.L D0-D7/A0-A6,-(A7)
LEA TABLEAU,A0
MOVE.W #18,D1 *LA LIGNE DU BAS
MOVEQ #0,D0
MULU.W #9,D1
LOOP_TEST_VIDE
ADDQ.W #1,D1
MOVE.B (A0,D1.W),D7
CMP.B #$FF,D7
BEQ NOT_VIDE
CMP.B #0,D7
BNE NOT_VIDE
ADDQ.W #1,D0
BRA LOOP_TEST_VIDE
NOT_VIDE
CMP.W #7,D0
BNE FIN_TEST_VIDE
MOVE.W #19,TOP_OF_LINE
FIN_TEST_VIDE
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
PLAY_SPE MOVEM.L D0-D7/A0-A6,-(A7)
CMP.W #0,THE_SPL
BEQ WAIT_SPL
CMP.W #1,THE_SPL
BEQ WAIT_SPL
CMP.W #2,THE_SPL
BEQ WAIT_SPL
CMP.W #3,THE_SPL
BEQ WAIT_SPL
CMP.W #4,THE_SPL
BEQ WAIT_SPL
CMP.W #5,THE_SPL
BEQ WAIT_SPL
CMP.W #6,THE_SPL
BEQ WAIT_SPL
CMP.W #10,THE_SPL
BEQ WAIT_SPL
CMP.W #11,THE_SPL
BEQ WAIT_SPL
BRA NOT_WAIT_SPL
WAIT_SPL
MOVE.W $FFFF8900.W,D0
CMP.W #0,D0
BNE WAIT_SPL
NOT_WAIT_SPL
MOVEQ #0,D0
LEA TAB_SPL,A2
LEA TAB_SPL_SIZE,A1
LEA SPL_TO_PLAY,A0
MOVE.W THE_SPL,D0
MOVE.L (A2,D0.W*4),(A0)
MOVE.L (A1,D0.W*4),D1
MOVE.B 3(A0),$FFFF8907.W
MOVE.B 2(A0),$FFFF8905.W
MOVE.B 1(A0),$FFFF8903.W
ADD.L D1,(A0)
MOVE.B 3(A0),$FFFF8913.W
MOVE.B 2(A0),$FFFF8911.W
MOVE.B 1(A0),$FFFF890F.W
MOVE.W #1+128,$FFFF8920.W
MOVE.W #1,$FFFF8900.W
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
NO_FILE
IFEQ DEMO
FILE_OPEN WRITE,F_NAME_HS
MOVE.W D0,F_HANDLE
FILE_CLOSE FHANDLE
ENDC
LEA SAVE_HS,A0
LEA TAB_H_SCORE_1,A1
MOVE.L #(480/4)-1,D0
LOOP_NO_FILE
MOVE.L (A0)+,(A1)+
DBRA D0,LOOP_NO_FILE
BSR CRYPT
BRA OK_FILE
CLR_KEYB
.wait_nul: appel dos,$0b,2 ; teste du buffer ...
tst.w d0
beq.s .the_end ; pas de touche en buffer ?
wait
bra.s .wait_nul
.the_end:
RTS
SPECIAL_SET_MODE
BSR SETMODE
CMP.W #1,TV_MODE
BEQ OK_TV
BRA GO
init_joy: appel xbios,34,2
move.l d0,a0
move.l 6*4(a0),save_joy
move.l a0,save_joy+4
move.l #my_joy,6*4(a0)
move.l #joy_param,-(a7)
move.w #2,-(a7)
appel xbios,$19,8
rts
restore_joy:
move.l save_joy+4,a0
move.l save_joy,6*4(a0)
move.l #stop_joy,-(a7)
move.w #1,-(a7)
appel xbios,$19,8
rts
my_joy: save d0
move.b (a0),d0
cmp.b #$ff,d0
bne.s pas_joy
MOVE.B #0,J_FLAG
move.b 2(a0),d0 * joystick port 1
CMP.B #8,D0
BNE NOT_J8
MOVE.B #$4D,J_FLAG
NOT_J8
CMP.B #4,D0
BNE NOT_J4
MOVE.B #$4B,J_FLAG
NOT_J4
CMP.B #1,D0
BNE NOT_J1
MOVE.B #$48,J_FLAG
NOT_J1
CMP.B #2,D0
BNE NOT_J2
MOVE.B #$50,J_FLAG
NOT_J2
BTST #7,D0
BEQ NOT_B7
MOVE.B #$39,J_FLAG
NOT_B7
pas_joy: load d0
rts
CRYPT
LEA TAB_H_SCORE_1,A0
MOVE.L CLEF,D0
MOVE.L #(480/4)-1,D1
CRYPT_LOOP
EOR.L D0,(A0)+
DBRA D1,CRYPT_LOOP
RTS
INCLUDE DEPACK35.S
INCLUDE SETMODE.S
IFEQ DEBUG
INCLUDE MOD_FADE.S
ENDC
IFNE MUSIC
INCLUDE DSPMOD.S
ENDC
DATA
EVEN
save_joy dc.l 0
dc.l 0
joy_param dc.b $12,$1a,$14
even
stop_joy dc.b $1A,$08
even
OK DC.W $FFFF
FHANDLE DC.W 0
ECRANRO DC.L 0
ECRANRO_TAB DC.L 0
OLD_SP DC.L 0
OLD_70 DC.L 0
CLEF DC.L 31415926
FLAG DC.W 0
PAL INCBIN PAL_COLU.PAL
EVEN
OLD_PAL DCB.L 260
OLD_REZ DC.W 0
OLD_PHYS DC.L 0
OLD_LOG DC.L 0
SYSTEM_SP DC.L 0
LEV_LOAD DC.L LEV0,LEV1,LEV2,LEV3,LEV4,LEV5,LEV6,LEV7,LEV8,LEV9
EVEN
LEV0 DC.B 'PIC0.LEV',0
EVEN
LEV1 DC.B 'PIC1.LEV',0
EVEN
LEV2 DC.B 'PIC2.LEV',0
EVEN
LEV3 DC.B 'PIC3.LEV',0
EVEN
LEV4 DC.B 'PIC4.LEV',0
EVEN
LEV5 DC.B 'PIC5.LEV',0
EVEN
LEV6 DC.B 'PIC6.LEV',0
EVEN
LEV7 DC.B 'PIC7.LEV',0
EVEN
LEV8 DC.B 'PIC8.LEV',0
EVEN
LEV9 DC.B 'PIC9.LEV',0
EVEN
F_NAME_HS DC.B 'COLUMS.HS',0
TITLE INCBIN TITLE.BIN
*TITLE INCBIN PIECE.BIN
EVEN
MENU INCBIN MENU.PAC
EVEN
FOND2 INCBIN CADRE.BIN
EVEN
INFO INCBIN INFO.BIN
EVEN
G_OVER INCBIN G_OVER.BIN
EVEN
FONTE INCBIN FONTE.BIN
LEV_PTR DC.L 0
EVEN
TABLEAU
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,255,255,255,255,255,255,255,255
EVEN
IFEQ DEBUG
TAB_VIDE
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,255,255,255,255,255,255,255,255
ELSE
TAB_VIDE
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,0,0,0,0,0,0,0,255
DC.B 255,13,12,0,0,0,0,0,255
DC.B 255,14,12,12,0,0,0,0,255
DC.B 255,15,12,12,0,0,0,0,255
DC.B 255,12,13,14,0,0,0,0,255
DC.B 255,255,255,255,255,255,255,255,255
ENDC
EVEN
APPLE INCBIN APPLE.BIN
YANG INCBIN YANG.BIN
CHICKEN INCBIN CHICKEN.BIN
JOYSTICK INCBIN JOYSTICK.BIN
MAN INCBIN MAN.BIN
WOMAN INCBIN WOMAN.BIN
SKWEEK INCBIN SKWEEK.BIN
ATOMIC INCBIN ATOMIC.BIN
INTER INCBIN INTER.BIN
STAR INCBIN STAR.BIN
DISK INCBIN DISK.BIN
WALL INCBIN WALL.BIN
M INCBIN M.BIN
C INCBIN C.BIN
S INCBIN S.BIN
SMILE INCBIN SMILE.BIN
BULLE INCBIN BULLE.BIN
EXPLO1_1 INCBIN EXPLO1_1.BIN
EXPLO1_2 INCBIN EXPLO1_2.BIN
EXPLO1_3 INCBIN EXPLO1_3.BIN
EXPLO1_4 INCBIN EXPLO1_4.BIN
EXPLO2_1 INCBIN EXPLO2_1.BIN
EXPLO2_2 INCBIN EXPLO2_2.BIN
EXPLO2_3 INCBIN EXPLO2_3.BIN
EXPLO2_4 INCBIN EXPLO2_4.BIN
DIGIT_0 INCBIN 0.BIN
DIGIT_1 INCBIN 1.BIN
DIGIT_2 INCBIN 2.BIN
DIGIT_3 INCBIN 3.BIN
DIGIT_4 INCBIN 4.BIN
DIGIT_5 INCBIN 5.BIN
DIGIT_6 INCBIN 6.BIN
DIGIT_7 INCBIN 7.BIN
DIGIT_8 INCBIN 8.BIN
DIGIT_9 INCBIN 9.BIN
NEXT INCBIN NEXT.BIN
PAUSE_SPRT INCBIN PAUSE.SPR
ARROW1 INCBIN ARROW1.SPR
ARROW2 INCBIN ARROW2.SPR
ARROW1M INCBIN ARROW1.MSK
ARROW2M INCBIN ARROW2.MSK
D_1 INCBIN D1.SPR
D_2 INCBIN D2.SPR
D_3 INCBIN D3.SPR
D_1M INCBIN D1.MSK
D_2M INCBIN D2.MSK
D_3M INCBIN D3.MSK
SNDTRK INCBIN SNDTRK.SPR
EFFECTS INCBIN EFFECTS.SPR
SNDTRK_M INCBIN SNDTRK.MSK
EFFECTS_M INCBIN EFFECTS.MSK
REGS_50 DC.W $0265,$002F,$0056,$0236 ; 640*400 -> 640*480 PAL
REGS_60 DC.W $0201,$0016,$0020,$0200 ; 640*400 -> 640*480 NTSC
TAB_DIF DC.L D_1,D_2,D_3
TAB_DIF_M DC.L D_1M,D_2M,D_3M
TAB_SOUND DC.L SNDTRK,EFFECTS
TAB_S_MASK DC.L SNDTRK_M,EFFECTS_M
IFNE MUSIC
TAB_MOD DC.L TRUC5,SPACE7,KDANCE8
ENDC
TAB_DIGIT DC.L DIGIT_0,DIGIT_1,DIGIT_2,DIGIT_3,DIGIT_4
DC.L DIGIT_5,DIGIT_6,DIGIT_7,DIGIT_8,DIGIT_9
TAB_SPR DC.L NULL,APPLE,YANG,CHICKEN,JOYSTICK,MAN,WOMAN,SKWEEK
DC.L ATOMIC,INTER,STAR,DISK,WALL,M,C,S,SMILE,BULLE
TAB_EXPL1 DC.L EXPLO1_1,EXPLO1_2,EXPLO1_3,EXPLO1_4,NULL
TAB_EXPL2 DC.L EXPLO2_1,EXPLO2_2,EXPLO2_3,EXPLO2_4,NULL
TAB_DIF_LEV DC.L TAB_CHG_1,TAB_CHG_2,TAB_CHG_3
TAB_CHG_LEV DC.L 0
TAB_CHG_1 DC.W 60,90,120,150,180,210,240,290,320,65535
TAB_CHG_2 DC.W 90,135,180,225,270,315,360,405,450,65535
TAB_CHG_3 DC.W 140,210,280,350,420,490,560,630,700,65535
TAB_DUBS DC.L M,C,S,SMILE
TAB_VAL_RAND DC.B 1,7,8,10
TAB_SPL DC.L SPL_BOUM,SPL_BULLE,FIOUIPZ,SPL_INTER,NORMAL
DC.L SPL_PAUSE,SPL_SMILE,SPL_SPACE,SPL_STAR
DC.L TINGCLAC,TOUGOUDN,TOUGZING,ZIOUP
TAB_SPL_SIZE DC.L 11440,3064,26645,6287,4796,948,8479,1950,2873,10314,5267,13522,2835
TAB_FONTE DC.L FONTE,FONTE+32,FONTE+64,FONTE+96,FONTE+128,FONTE+160,FONTE+192,FONTE+224
DC.L FONTE+256,FONTE+288,FONTE+320,FONTE+352,FONTE+384,FONTE+416,FONTE+448
DC.L FONTE+480,FONTE+512,FONTE+544,FONTE+576,FONTE+608
DC.L FONTE+(32*640),FONTE+(32*640)+32,FONTE+(32*640)+64,FONTE+(32*640)+96,FONTE+(32*640)+128,FONTE+(32*640)+160,FONTE+(32*640)+192,FONTE+(32*640)+224
DC.L FONTE+(32*640)+256,FONTE+(32*640)+288,FONTE+(32*640)+320,FONTE+(32*640)+352,FONTE+(32*640)+384,FONTE+(32*640)+416,FONTE+(32*640)+448
DC.L FONTE+(32*640)+480,FONTE+(32*640)+512,FONTE+(32*640)+544,FONTE+(32*640)+576,FONTE+(32*640)+608
DC.L FONTE+(64*640),FONTE+(64*640)+32,FONTE+(64*640)+64,FONTE+(64*640)+96,FONTE+(64*640)+128,FONTE+(64*640)+160,FONTE+(64*640)+192,FONTE+(64*640)+224
DC.L FONTE+(64*640)+256,FONTE+(64*640)+288,FONTE+(64*640)+320,FONTE+(64*640)+352,FONTE+(64*640)+384,FONTE+(64*640)+416,FONTE+(64*640)+448
DC.L FONTE+(64*640)+480,FONTE+(64*640)+512,FONTE+(64*640)+544,FONTE+(64*640)+576,FONTE+(64*640)+608
TAB_HS_TAB DC.L TAB_H_SCORE_1,TAB_H_SCORE_2,TAB_H_SCORE_3
CASE_LEVEL DC.B 1,3,4,5
CUR_PIECE DC.W 0,0,0,0
SAVE_P1 DC.B 0
SAVE_P2 DC.B 0
SAVE_P3 DC.W 0
NEXT_PIECE DC.W 0,0,0,0
TOP_OF_LINE DC.W $FF
NEXT_X_Y DC.L 96*640+16*640
ARROW_OFFSET DC.L 245*640
IFNE MUSIC
TRUC5 INCBIN TRUC5.PAC
EVEN
SPACE7 INCBIN SPACE7.PAC
EVEN
KDANCE8 INCBIN KDANCE8.PAC
EVEN
BBP7 INCBIN BBP7.PAC
ENDC
EVEN
SPL_BOUM INCBIN BOOM.RAW
EVEN
SPL_BULLE INCBIN BULLE.RAW
EVEN
FIOUIPZ INCBIN FIOUIPZ.RAW
EVEN
SPL_INTER INCBIN INTER.RAW
EVEN
NORMAL INCBIN NORMAL.RAW
EVEN
SPL_PAUSE INCBIN PAUSE.RAW
EVEN
SPL_SMILE INCBIN SMILE.RAW
EVEN
SPL_SPACE INCBIN SPACE.RAW
EVEN
SPL_STAR INCBIN STAR.RAW
EVEN
TINGCLAC INCBIN TINGCLAC.RAW
EVEN
TOUGOUDN INCBIN TOUGOUDN.RAW
EVEN
TOUGZING INCBIN TOUGZING.RAW
EVEN
ZIOUP INCBIN ZIOUP.RAW
EVEN
TXT_HS DC.B "HIGHSCORE",13,"DIFFICULTY "
FIN_TXT_HS
EVEN
SAVE_HS
INCBIN COLUMSHS.BIN
IFNE DEMO
LEVEL INCBIN PIC0.LEV
ENDC
BSS
EVEN
OLD_484 DS.W 1
TAB_H_SCORE_1 DS.B (12+4)*10
TAB_H_SCORE_2 DS.B (12+4)*10
TAB_H_SCORE_3 DS.B (12+4)*10
J_FLAG DS.W 1
FADE_FLAG DS.W 1
THE_SPL DS.W 1
SPL_TO_PLAY DS.L 1
CUR_NAME DS.B 12
PTR_CUR DS.W 1
SAVE DS.B 32*32*2
SAVE_D DS.B 32*48
SAVE_S DS.B 32*240
MASK DS.L 1
TAB_SAVE DS.B 22
TV_MODE DS.W 1
MENU_ITEM DS.W 1
OLD_ITEM DS.W 1
SOUND DS.W 1
SWAPPER DS.L 1
DO_IT_NORMAL DS.W 1
REDONDANCE DS.W 1
NB_EXPL DS.W 1
CUR_COLONE DS.W 1
CUR_LIGNE DS.W 1
CUR_X DS.L 1
CUR_Y DS.L 1
INC_Y DS.W 1
WAIT_POSE DS.W 1
NO_ROTAT DS.W 1
LINE_EXP DS.W 1
COL_EXP DS.W 1
CUR_LEVEL DS.W 1
CUR_DUBS DS.W 1
NB_PIECE DS.W 1
WAIT_Y DS.W 1
WAIT_Y_SAVE DS.W 1
GD_FLAG DS.W 1
B_FLAG DS.W 1
NB_SCANNED DS.W 1
NB_MUR DS.W 1
DIFICULT DS.W 1
PTR_EXPL DS.W 1
PTR_POINT DS.W 1
PTR_PIECE DS.W 1
EXPL_TYPE DS.W 1
NULL DS.B 32*32
DS.L 1
OFFSET DS.L 1
SPRITE DS.L 1
MOUSEPARAM DS.B 1
XMOUSE DS.W 1
YMOUSE DS.W 1
KEY DS.B 1
KEY_SAVE DS.B 1
F_HANDLE DS.W 1
EVEN
NUM_NOM DS.W 1
SCORE DS.L 1
DECIMAL DS.B 20
DECIMAL_HS DS.B 20
DECIM_G_O DS.B 20
PIECE DS.B 20*10
THE_PIECE DS.B 1
EVEN
SCANNED DS.L 7*21
TAB_EXPL
DS.L 7*21
TAB_EXPL_TRIE
DS.L 7*21
IFEQ DEMO
LEVEL DS.B 64000
ELSE
DS.B 64000
ENDC
SCR_CLIP
DS.B 640*100
SCR
DS.B 640*480
END