home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 2002 January / STC_CD_01_2002.iso / GAMES / COLUMSRC / COLUMS.BAK < prev    next >
Text File  |  2001-12-26  |  69KB  |  3,998 lines

  1. MOD_BOX=0
  2. MOD_DECI=0
  3. MOD_HEXA=0
  4. DEMO=0
  5. DEBUG=0
  6. MUSIC=1
  7.     *OPT D-
  8.     
  9.     INCLUDE GUW_MAC2.S
  10.     IFEQ    DEMO
  11.     OUTPUT C:\DEVPAC\SOURCES\COLUMS\COLUMS.PRG
  12.     ELSE
  13.     OUTPUT C:\DEVPAC\SOURCES\COLUMS\COLUMS_D.PRG
  14.     ENDC
  15.     
  16.     
  17. ***************************************
  18. * prendre doc dsp pour mr canal!!!!!!!*
  19. ***************************************
  20.  
  21.     OPT O+
  22. *    NIRINA :40298808
  23. DEBUT
  24. SETBLOCK    MOVE.L    A7,A5
  25.     MOVE.L    4(A5),A5
  26.     MOVE.L    $C(A5),D0
  27.     ADD.L    $14(A5),D0
  28.     ADD.L    $1C(A5),D0
  29.     ADD.L    #5*1024,D0    * 5k POUR LA PILE
  30.     MOVE.L    D0,-(A7)
  31.     MOVE.L    A5,-(A7)
  32.     MOVE.W    #0,-(A7)
  33.     MOVE.W    #$4A,-(A7)
  34.     TRAP    #1
  35.     LEA    12(A7),A7
  36.     
  37.     PEA    0.W
  38.     MOVE.W    #$20,-(A7)
  39.     TRAP    #1
  40.     ADDQ.L    #6,A7
  41.     MOVE.L    D0,OLD_SP
  42.     
  43.     BSR    SAVE_ENV
  44.     BSR    LITTLE_INIT
  45.     MOVE.L    #SCR,D0
  46.     AND.L    #-8,D0
  47.     MOVE.L    D0,ECRANRO
  48.     SUB.L    #96*640,D0
  49.     MOVE.L    D0,ECRANRO_TAB
  50.     
  51.     MOVE.L    D0,$44E.W
  52.     LEA    ECRANRO,A0
  53.     MOVE.B    1(A0),$FFFF8201.W
  54.     MOVE.B    2(A0),$FFFF8203.W
  55.     MOVE.B    3(A0),$FFFF820D.W
  56.     MOVE.W    #0,TV_MODE
  57.     MOVE.W    OLD_REZ,D0
  58.     BTST    #4,D0
  59.     BNE    VGA
  60.     MOVE.W    #1,TV_MODE
  61.     AND.W    #%1111111001100000,D0
  62.     ADD.W    #$100+$8+$3,D0    *NORMALEMENT 
  63.             * EN PAL D0=$12B(640*400*256C)
  64.     MOVE.W    D0,D7
  65.     MOVE.L    $4F2,A0
  66.     MOVE.W    2(A0),D0
  67.     CMP.W    #$0402,D0
  68.     BLE    SPECIAL_SET_MODE
  69.  
  70.     MOVE.W    D7,D0
  71.     MOVE.W    D0,-(A7)
  72.     
  73.     IFEQ    DEBUG
  74.     MOVE.W    #$58,-(A7)
  75.     TRAP    #14
  76.     ADDQ.L    #4,A7
  77.     
  78.     
  79.     ELSE
  80.     MOVE.W    #3,-(A7)
  81.     MOVE.L    ECRANRO,-(A7)
  82.     MOVE.L    ECRANRO,-(A7)
  83.     MOVE.W    #$5,-(A7)
  84.      TRAP    #14
  85.     LEA    14(A7),A7
  86.     ENDC
  87. OK_TV    
  88.     IFNE DEBUG    
  89.     BRA    DEBUG_REGS
  90.     ENDC
  91.  
  92.     LEA    REGS_50,A0
  93.     BTST     #5,D7
  94.     BNE.S     PAL_MODE
  95.     LEA    REGS_60,A0
  96. PAL_MODE
  97.     MOVE.W    (A0)+,$FFFF82a4.W
  98.     MOVE.W     (A0)+,$FFFF82a6.W
  99.     MOVE.W     (A0)+,$FFFF82a8.W
  100.     MOVE.W     (A0)+,$FFFF82aa.W
  101.  
  102. DEBUG_REGS
  103.     BRA.S    GO
  104. VGA
  105.     AND.W    #%1111111001100000,D0
  106.     ADD.W    #$10+$8+3,D0
  107.     MOVE.W    D0,D7
  108.     MOVE.L    $4F2,A0
  109.     MOVE.W    2(A0),D0
  110.     CMP.W    #$0402,D0
  111.     BLE    SPECIAL_SET_MODE
  112.     MOVE.W    D7,D0
  113.     MOVE.W    D0,-(A7)
  114.     IFEQ    DEBUG
  115.     
  116.     
  117.     MOVE.W    #$58,-(A7)
  118.     TRAP    #14
  119.     ADDQ.L    #4,A7
  120.     
  121.     ELSE
  122.     MOVE.W    #3,-(A7)
  123.     MOVE.L    ECRANRO,-(A7)
  124.     MOVE.L    ECRANRO,-(A7)
  125.     MOVE.W    #$5,-(A7)
  126.      TRAP    #14
  127.     LEA    14(A7),A7
  128.      ENDC
  129. GO
  130.     IFNE DEBUG    
  131.     BRA    TO_DEBUG
  132.     ENDC
  133.     
  134.     MOVE.B    #$12,$FFFFFC02.W
  135.     
  136.     MOVE.W    #$2700,SR
  137.     MOVE.L    $70.W,OLD_70
  138.     MOVE.L    #VBL,$70.W
  139.     MOVE.W    #$2300,SR
  140. TO_DEBUG
  141.     BSR    INIT_JOY
  142.  
  143. DO_MENU
  144.     IFNE    MUSIC
  145.     BSR    MUSIC_OFF
  146.     ENDC
  147.     
  148.     IFEQ    DEBUG
  149.     MOVEQ    #1,D0
  150.     BSR    FADE_OUT256
  151.     ENDC
  152.  
  153.     LEA    MENU,A0
  154.     MOVE.L    ECRANRO,A1
  155.     BSR    DEPACK    * ATOMIK DEPACK NANANANERE !!!
  156.     BSR    SAVE_FOND_DIF
  157.     BSR    SAVE_FOND_SOUND
  158.     
  159.     MOVEQ    #0,D1
  160.     MOVE.W    MENU_ITEM,D1
  161.     MULU.L    #55*640,D1
  162.     MOVE.L    ARROW_OFFSET,D2
  163.     ADD.L    D1,D2
  164.     MOVE.L    D2,OFFSET
  165.     BSR    SAVE_FOND_G
  166.  
  167.     ADD.L    #640-32,OFFSET
  168.     BSR    SAVE_FOND_D
  169.     
  170.     BSR    AFF_ARROWS
  171.     BSR    DO_DIFICULTY    
  172.     BSR    AFF_SOUND
  173.     
  174.     IFEQ    DEBUG
  175.     LEA    PAL,A0
  176.     MOVEQ    #1,D0
  177.     BSR    FADE_IN256
  178.     ENDC
  179.  
  180.     BSR    CLR_KEYB
  181.     
  182.     IFNE    MUSIC
  183.     BSR    MUSIC_OFF
  184.     MOVE.L    #BBP7,A0
  185.     MOVE.L    #MODULE,A1
  186.     BSR    DEPACK
  187.     MOVE.L    #MODULE,A0
  188.     BSR    MUSIC_ON
  189.     ENDC
  190.         
  191.  
  192.  
  193. MENU_LOOP
  194.     BSR    WAIT_VBL
  195.     BSR    AFF_ARROWS
  196.     BSR    GET_CHAR
  197.     
  198.     CMP.B    #$01,KEY
  199.     BEQ    FIN
  200.     
  201.     CMP.B    #$48,KEY
  202.     BNE    CONT_MENU1
  203.     SUBQ.W    #1,MENU_ITEM
  204.     CMP.W    #0,MENU_ITEM
  205.     BGE    CONT_MENU1
  206.     MOVE.W    #5,MENU_ITEM
  207. CONT_MENU1
  208.     
  209.     CMP.B    #$50,KEY
  210.     BNE    CONT_MENU2
  211.     ADDQ.W    #1,MENU_ITEM
  212.     CMP.W    #5,MENU_ITEM
  213.     BLE    CONT_MENU2
  214.     MOVE.W    #0,MENU_ITEM
  215. CONT_MENU2
  216.     
  217.     CMP.B    #$39,KEY
  218.     BNE    CONT_MENU3
  219.     CMP.W    #0,MENU_ITEM
  220.     BEQ    DO_INFO
  221.     CMP.W    #1,MENU_ITEM
  222.     BNE    NOT_DIFICULTY
  223.     ADDQ.W    #1,DIFICULT
  224.     BSR    WAIT_VBL
  225.     BSR    DO_DIFICULTY    
  226. NOT_DIFICULTY
  227.     CMP.W    #2,MENU_ITEM
  228.     BNE    NOT_DO_SOUND
  229.     BSR    WAIT_VBL
  230.     BSR    DO_SOUND
  231. NOT_DO_SOUND
  232.     CMP.W    #3,MENU_ITEM
  233.     BEQ    PLAY
  234.     CMP.W    #4,MENU_ITEM
  235.     BEQ    HIGHSCORE
  236.     CMP.W    #5,MENU_ITEM
  237.     BEQ    FIN
  238. CONT_MENU3
  239.     BRA    MENU_LOOP
  240.  
  241. PLAY    
  242.     
  243.     IFNE    MUSIC
  244.     BSR    MUSIC_OFF
  245.     ENDC
  246.     
  247.     IFEQ    DEBUG
  248.     MOVEQ    #1,D0
  249.     BSR    FADE_OUT256
  250.     ENDC
  251.     JSR    CLS    
  252.     MOVE.W    #0,LEV_PTR
  253.     BSR    AFF_FOND
  254.     BSR    LOAD_LEVEL
  255.     MOVE.W    #0,$FFFF8900.W
  256.     BSR    AFF_TET
  257.     
  258.     
  259.     IFNE MUSIC
  260.     CMP.W    #1,SOUND
  261.     BEQ    NO_LEV_MUSIC
  262.     MOVE.W    DIFICULT,D0
  263.     SUBQ.W    #1,D0
  264.     LEA    TAB_MOD,A0
  265.     MOVE.L    (A0,D0.W*4),A0
  266.     MOVE.L    #MODULE,A1
  267.     BSR    DEPACK
  268.     MOVE.L    #MODULE,A0
  269.     BSR    MUSIC_ON
  270.     BRA    OK_FOR_SOUND
  271. NO_LEV_MUSIC
  272.     MOVE.W    #0,$FFFF8900.W
  273.     MOVE.W    #1,-(A7)
  274.     MOVE.W    #0,-(A7)    
  275.     MOVE.W    #0,-(A7)    
  276.     MOVE.W    #8,-(A7)    
  277.     MOVE.W    #0,-(A7)    
  278.     MOVE.W    #$8B,-(A7)    
  279.     TRAP    #14
  280.     ADD.L    #$C,A7
  281. OK_FOR_SOUND
  282.     ENDC
  283.     CMP.W    #1,SOUND
  284.     BNE    NO_START_SPL
  285.     MOVE.W    #9,THE_SPL    *TINGCLAC.RAW
  286.     BSR    PLAY_SPE
  287. NO_START_SPL
  288.     JSR    WAIT_VBL
  289.     IFNE DEBUG    
  290.     BRA    TO_DEBUG_PAL
  291.     ENDC
  292.     
  293.     IFEQ    DEBUG
  294.     MOVE.L    #PAL,A0
  295.     MOVEQ    #1,D0
  296.     BSR    FADE_IN256
  297.     ENDC
  298. TO_DEBUG_PAL
  299.  
  300.     MOVE.L    #0,SCORE
  301.     MOVE.W    #0,NB_EXPL
  302.     MOVE.W    #0,NO_ROTAT
  303.     BSR    INIT    
  304.     BSR    AFF_PIECE
  305.     BSR    AFF_NEXT
  306.     BRA    TOMBE_PIECE
  307. MAIN_LOOP
  308.     BSR    TEST_OF_LINE
  309.     BSR    COMPTE_POINT
  310.     BSR    TEST_HAUT
  311.     MOVE.W    #0,SCANNED
  312.     
  313.     BSR    CLR_KEYB
  314.     
  315.     CMP.W    #4,TOP_OF_LINE
  316.     BLE    GAME_OVER
  317. CONT_MAIN
  318.     MOVE.W    #4,CUR_COLONE
  319.     MOVE.W    #3,CUR_LIGNE
  320.     MOVE.L    #3*32+48,CUR_X
  321.     MOVE.L    #0,CUR_Y
  322.     BSR    NEXT_TO_CUR
  323.     BSR    AFF_NEXT
  324.     MOVE.W    #18,LINE_EXP
  325.     MOVE.W    #1,COL_EXP
  326.     MOVE.W    #0,WAIT_POSE
  327.     MOVE.W    WAIT_Y_SAVE,WAIT_Y
  328.     MOVE.W    #0,TOP_OF_LINE
  329.     BRA    TOMBE_PIECE
  330.     
  331. FIN
  332.     IFNE    MUSIC
  333.     BSR    MUSIC_OFF
  334.     ENDC
  335.     
  336.     IFEQ    DEBUG
  337.     BSR    WAIT_VBL
  338.     MOVEQ    #1,D0
  339.     BSR    FADE_OUT256
  340.     MOVE.W    #$2700,SR
  341.     MOVE.L    OLD_70,$70.W
  342.     ENDC
  343.     BSR    RESTORE_JOY
  344.     MOVE.W    #$2300,SR
  345.     BSR    CLR_KEYB
  346.     BSR    REST_ENV
  347. CACA
  348.     
  349.     appel xbios,105,2    ; dsp_unlock    
  350.     
  351.     MOVE.L    OLD_SP,-(A7)
  352.     MOVE.W    #$20,-(A7)
  353.     TRAP    #1
  354.     ADDQ.L    #6,A7
  355.     
  356.     MOVE.W    #0,-(A7)
  357.     TRAP    #1
  358.     
  359. VBL
  360.     MOVE.W    #1,OK
  361.     RTE
  362.     
  363. TOMBE_PIECE
  364.     MOVE.W    #0,WAIT_POSE
  365. GO_TOMBE
  366.     LEA    TABLEAU,A4
  367.     MOVE.W    CUR_COLONE,D4
  368.     MOVE.W    #0,GD_FLAG
  369.     
  370.     
  371.     IFEQ DEBUG
  372.     BSR    GET_CHAR    
  373.     
  374.     ELSE
  375.     MOVE.W    #$7,-(A7)
  376.     TRAP    #1
  377.     SWAP    D0
  378.     MOVE.B    D0,KEY
  379.     ENDC
  380.     
  381.     CMP.B    #$01,KEY
  382.     BEQ    STOP_GAME
  383.     
  384.     MOVE.B    KEY,D7
  385.     MOVE.B    D7,KEY_SAVE    
  386.     
  387.     CMP.B    #$4B,KEY
  388.     BEQ    GAUCHE
  389.     
  390.     CMP.B    #$4D,KEY
  391.     BEQ    DROITE
  392.     
  393.     CMP.B    #$39,KEY
  394.     BEQ    ROTATION
  395.     
  396.     CMP.B    #$50,KEY
  397.     BEQ    FALL
  398.     
  399.     CMP.B    #$19,KEY
  400.     BEQ    PAUSE
  401. PLUS_PAUSE
  402.     
  403. DO_TEST
  404.     CMP.W    #0,WAIT_POSE
  405.     BNE.S    CONT_TST
  406.     CMP.W    #1,WAIT_Y
  407.     BGE.S    CONT_TST
  408.     MOVE.W    INC_Y,D7    
  409.     ADD.L    D7,CUR_Y
  410.     MOVE.W    WAIT_Y_SAVE,WAIT_Y
  411. CONT_TST
  412.     SUBQ.W    #1,WAIT_Y
  413.     JSR    WAIT_VBL
  414.     BSR    EFF_PIECE
  415.     BSR    COLONE_TO_X
  416.     BSR    AFF_PIECE
  417.     
  418.     MOVE.L    CUR_Y,D0
  419.     ADD.L    #96+16,D0
  420.     DIVU.W    #32,D0
  421.     MOVE.W    D0,CUR_LIGNE
  422.     
  423.     BRA    TEST_BAS
  424.  
  425.     ************************
  426.     
  427. GAUCHE
  428.     
  429.     CMP.W    #15,WAIT_POSE
  430.     BEQ.S    CONT_DO_GAUCHE
  431.     MOVE.W    #1,GD_FLAG
  432. CONT_DO_GAUCHE
  433.     MOVE.L    CUR_Y,D5
  434.     ADD.L    #3*32+16,D5
  435.     DIVU.W    #32,D5
  436.     CMP.W    #0,WAIT_POSE
  437.     BNE.S    DO_GAUCHE
  438.     ADDQ.W    #1,D5
  439. DO_GAUCHE    
  440.     MULU.W    #9,D5
  441.     ADD.W    D4,D5
  442.     SUBQ.W    #1,D5
  443.     CMP.B    #0,(A4,D5.W)
  444.     BNE.S    BORD_GAUCHE
  445.     SUBQ    #1,CUR_COLONE
  446.     MOVE.W    #0,WAIT_POSE
  447.     MOVE.W    #1,WAIT_Y
  448.     BRA    DO_TEST
  449. BORD_GAUCHE
  450.     MOVE.W    #0,WAIT_POSE
  451.     MOVE.W    #1,WAIT_Y
  452.     MOVE.B    #0,KEY
  453.     BRA    DO_TEST
  454.  
  455.     ***********************
  456.     
  457. DROITE
  458.     
  459.     CMP.W    #15,WAIT_POSE
  460.     BEQ.S    CONT_DO_DROITE
  461.     MOVE.W    #1,GD_FLAG
  462. CONT_DO_DROITE
  463.     MOVE.L    CUR_Y,D5
  464.     ADD.L    #3*32+16,D5
  465.     DIVU.W    #32,D5
  466.     CMP.W    #0,WAIT_POSE
  467.     BNE.S    DO_DROITE
  468.     ADDQ.W    #1,D5
  469. DO_DROITE
  470.     MULU.W    #9,D5
  471.     ADD.W    D4,D5
  472.     ADDQ.W    #1,D5
  473.     CMP.B    #0,(A4,D5.W)
  474.     BNE.S    BORD_DROIT
  475.     ADDQ    #1,CUR_COLONE
  476.     MOVE.W    #0,WAIT_POSE
  477.     MOVE.W    #1,WAIT_Y
  478.     BRA    DO_TEST
  479. BORD_DROIT
  480.     MOVE.W    #0,WAIT_POSE
  481.     MOVE.W    #1,WAIT_Y
  482.     MOVE.B    #0,KEY
  483.     BRA    DO_TEST
  484. STOP_KEY
  485.     MOVE.B    #0,KEY
  486.     MOVE.W    #0,WAIT_POSE
  487.     MOVE.W    #1,WAIT_Y
  488.     BRA    DO_TEST
  489.     
  490.     ************************
  491.     
  492. ROTATION
  493.     MOVE.B    #0,KEY
  494.     CMP.W    #1,NO_ROTAT
  495.     BEQ    DO_TEST
  496.     MOVE.L    #CUR_PIECE,A5
  497.     MOVE.B    2(A5),D6
  498.     MOVE.B    1(A5),2(A5)
  499.     MOVE.B    (A5),1(A5)
  500.     MOVE.B    D6,(A5)
  501.     CMP.W    #1,SOUND
  502.     BNE    NO_SPACE_SPL
  503.     MOVE.W    #7,THE_SPL    *SPACE.RAW
  504.     BSR    PLAY_SPE
  505. NO_SPACE_SPL
  506.     BRA    DO_TEST
  507.     
  508.     **************************
  509.     
  510. FALL    
  511.     CMP.W    #1,SOUND
  512.     BNE    NO_FALL_SPL
  513.     MOVE.W    #12,THE_SPL    *TINGCLAC.RAW
  514.     BSR    PLAY_SPE
  515. NO_FALL_SPL
  516.  
  517.     MOVE.W    #$13,$FFFFFC02.W
  518.     MOVEQ    #0,D5
  519.     LEA    TABLEAU,A4
  520.     MOVE.W    CUR_LIGNE,D5
  521.     ADDQ.W    #1,D5
  522.     MULU.W    #9,D5
  523.     ADD.W    CUR_COLONE,D5
  524.     CMP.B    #0,(A4,D5.W)
  525.     BNE.S    STOP_FALL
  526.     ADDQ.W    #1,CUR_LIGNE
  527.     MOVE.W    CUR_LIGNE,D5
  528.     SUBQ.W    #3,D5
  529.     MULU.W    #32,D5
  530.     SUB.L    #16,D5
  531.  
  532.  
  533. FALL2
  534.     
  535.     BSR    WAIT_VBL
  536.     BSR    EFF_PIECE
  537.     MOVE.L    D5,CUR_Y
  538.     BSR    AFF_PIECE
  539.     MOVEQ    #0,D5
  540.     LEA    TABLEAU,A4
  541.     MOVE.W    CUR_LIGNE,D5
  542.     ADDQ.W    #1,D5
  543.     MULU.W    #9,D5
  544.     ADD.W    CUR_COLONE,D5
  545.     CMP.B    #0,(A4,D5.W)
  546.     BNE.S    STOP_FALL
  547.     ADDQ.W    #1,CUR_LIGNE
  548.     MOVE.W    CUR_LIGNE,D5
  549.     SUBQ.W    #3,D5
  550.     MULU.W    #32,D5
  551.     SUB.L    #16,D5
  552.     BRA.S    FALL2
  553. STOP_FALL    
  554.     MOVE.W    #$11,$FFFFFC02.W
  555.     BRA.S    PUT_IN_TAB
  556.  
  557.     
  558.     ***************************
  559. TEST_BAS
  560.     LEA    TABLEAU,A4
  561.     MOVE.W    CUR_LIGNE,D5
  562.     ADDQ.W    #1,D5
  563.     MULU.W    #9,D5
  564.     ADD.W    CUR_COLONE,D5
  565.     CMP.B    #0,(A4,D5.W)
  566.     BEQ    TOMBE_PIECE
  567.     CMP.W    #15,WAIT_POSE    *ICI METTRE 15
  568.     BEQ.S    PUT_IN_TAB
  569.     ADDQ.W    #1,WAIT_POSE
  570.     BRA    GO_TOMBE
  571. PUT_IN_TAB
  572.     CMP.W    #1,SOUND
  573.     BNE    NO_PAUSE_SPL
  574.     MOVE.W    #5,THE_SPL    *PAUSE.RAW
  575.     BSR    PLAY_SPE
  576. NO_PAUSE_SPL
  577.     CMP.B    #9,CUR_PIECE
  578.     BNE.S    CONT_TEST_INTER
  579.     MOVE.W    NB_PIECE,D7
  580.     MOVE.B    CUR_PIECE,SAVE_P1
  581.     MOVE.B    #0,SAVE_P2
  582.     BSR    RANDOM
  583.     MOVE.B    D7,CUR_PIECE
  584.     MOVE.B    D7,SAVE_P3
  585.     BSR    DO_INTER
  586.     
  587. CONT_TEST_INTER
  588.     CMP.B    #9,CUR_PIECE+1
  589.     BNE.S    CONT_TEST_INTER2
  590.     MOVE.W    NB_PIECE,D7
  591.     MOVE.B    CUR_PIECE+1,SAVE_P1
  592.     MOVE.B    #1,SAVE_P2
  593.     BSR    RANDOM
  594.     MOVE.B    D7,CUR_PIECE+1
  595.     MOVE.B    D7,SAVE_P3
  596.     BSR    DO_INTER
  597. CONT_TEST_INTER2
  598.     CMP.B    #9,CUR_PIECE+2
  599.     BNE.S    CONT_PUT_IN_TAB
  600.     MOVE.W    NB_PIECE,D7
  601.     MOVE.B    CUR_PIECE+2,SAVE_P1
  602.     MOVE.B    #2,SAVE_P2
  603.     BSR    RANDOM
  604.     MOVE.B    D7,CUR_PIECE+2
  605.     MOVE.B    D7,SAVE_P3
  606.     BSR    DO_INTER
  607.     
  608. CONT_PUT_IN_TAB
  609.     BSR    AFF_PIECE
  610.     LEA    TABLEAU,A4
  611.     MOVE.W    #0,WAIT_POSE
  612.     LEA    CUR_PIECE,A5
  613.     MOVE.W    CUR_LIGNE,D5
  614.     MOVE.W    D5,D4
  615.     SUBQ    #1,D4
  616.     MOVE.W    D4,D3
  617.     SUBQ    #1,D3
  618.     MULU.W    #9,D5
  619.     MULU.W    #9,D4
  620.     MULU.W    #9,D3
  621.     ADD.W    CUR_COLONE,D5
  622.     ADD.W    CUR_COLONE,D4
  623.     ADD.W    CUR_COLONE,D3
  624.     MOVE.B    (A5)+,(A4,D3.W)
  625.     MOVE.B    (A5)+,(A4,D4.W)
  626.     MOVE.B    (A5),(A4,D5.W)
  627.     MOVE.W    #0,PTR_PIECE
  628.     
  629.     CMP.B    #16,CUR_PIECE
  630.     BEQ    DO_SMILE
  631.     CMP.B    #16,CUR_PIECE+1
  632.     BEQ    DO_SMILE
  633.     CMP.B    #16,CUR_PIECE+2
  634.     BEQ    DO_SMILE
  635. NO_SMILE
  636.  
  637. *    BRA    LOOP_TEST_TAB
  638. TEST_STAR
  639.     MOVEQ    #0,D0
  640.     MOVE.B    CUR_PIECE+2,D0
  641.     CMP.B    #10,D0    * STAR
  642.     BNE    LOOP_TEST_TAB
  643. LOOP_STAR
  644.     CMP.W    #1,SOUND
  645.     BNE    NO_STAR_SPL
  646.     MOVE.W    #8,THE_SPL    *STAR.RAW
  647.     BSR    PLAY_SPE
  648. NO_STAR_SPL
  649.  
  650.     LEA    TABLEAU,A0
  651.     MOVE.W    CUR_COLONE,D1  *POUR REDRAW
  652.     MOVE.W    CUR_LIGNE,D3
  653.     MOVE.W    D3,D4
  654.     ADDQ.W    #1,D4    * CUR_LIGNE+1
  655.     MOVE.W    D4,CUR_LIGNE    * POUR LA BOUCLE SUIVANTE
  656.     MULU.W    #9,D3    *LIGNE DS TAB
  657.     MULU.W    #9,D4    *
  658.     ADD.W    D1,D3    *+COLONE
  659.     ADD.W    D1,D4    *
  660.     MOVE.B    (A0,D4.W),D5
  661.     CMP.B    #$FF,D5
  662.     BEQ    LOOP_TEST_TAB
  663.     MOVE.B    (A0,D3.W),(A0,D4.W)
  664.     MOVE.B    D5,(A0,D3.W)
  665.     REPT 7
  666.     BSR    WAIT_VBL
  667.     ENDR
  668.     BSR    REDRAW
  669.     BRA    LOOP_STAR
  670.     
  671. LOOP_TEST_TAB
  672.     MOVE.W    #1,EXPL_TYPE
  673.     MOVEQ    #0,D0
  674.     MOVE.L    D0,D1
  675.     LEA    TAB_EXPL,A6
  676.     LEA    TABLEAU,A5
  677.     MOVE.W    LINE_EXP,D0    *18 EME LIGNE
  678.     MOVE.W    COL_EXP,D1    *1 ERRE COLONE    
  679. TEST_TAB
  680.     MOVEQ    #0,D2
  681.     MOVE.L    D2,D3
  682.     MOVE.L    D2,D4
  683.     MOVE.L    D2,D5
  684.     MOVE.L    D2,D6
  685.     MOVE.L    D2,D7
  686.     
  687.     MOVE.W    D0,D2    *LIGNE
  688.     MULU.W    #9,D2    *INDEX LIGNE DANS TABLEAU
  689.     ADD.W    D1,D2    *INDEX PIECE DS TAB
  690.     MOVE.B    0(A5,D2.W),D7    *PIECE A TESTE
  691.     CMP.B    #0,D7
  692.     BEQ    NEXT_ONE
  693.     CMP.B    #12,D7    * MUR
  694.     BEQ    NEXT_ONE
  695.     CMP.B    #11,D7    * DISQUETTE
  696.     BEQ    DISQUETTE
  697.     CMP.B    #17,D7    * BULLE
  698.     BEQ    DO_BULLE    
  699.     CMP.B    #13,D7    * M DE MCS
  700.     BEQ    TEST_MCS
  701. TEST_THEM
  702.     ************************
  703.     **** TEST AU DESSUS ****
  704.     **** ET EN DESSOUS  ****
  705.     ************************
  706.     
  707.     MOVE.W    D0,D2
  708.     MOVE.W    D0,D3
  709.     SUBQ.W    #1,D2    *LIGNE AU DESSUS
  710.     ADDQ.W    #1,D3    *LIGNE EN DESSOUS
  711.  
  712.     MOVE.W    D2,D4    * SAUVE LIGNES POUR TAB_EXPL
  713.     MOVE.W    D3,D5    *
  714.     MULU.W    #9,D2
  715.     MULU.W    #9,D3
  716.     ADD.W    D1,D2    * PIECE DESSUS
  717.     ADD.W    D1,D3    * PIECE DESSOUS
  718.     
  719.     MOVE.B    0(A5,D2.W),D6
  720.     CMP    D6,D7
  721.     BNE.S    DROITE_GAUCHE
  722.     MOVE.B    0(A5,D3.W),D6
  723.     CMP    D6,D7
  724.     BNE.S    DROITE_GAUCHE
  725.     
  726.     ****** PIECE AU DESSUS ******
  727.     MOVE.W    D4,(A6)+    * LIGNE
  728.     MOVE.W    D1,(A6)+    * COLONE
  729.     ****** PIECE DU DESSOUS ******
  730.     MOVE.W    D5,(A6)+    * LIGNE
  731.     MOVE.W    D1,(A6)+    * COLONE
  732.  
  733.     MOVE.W    #1,FLAG
  734.     *****************************
  735.     *** TEST DROITE ET GAUCHE ***
  736.     *****************************
  737. DROITE_GAUCHE
  738.     MOVE.W    D0,D2    * LIGNE
  739.     MOVE.W    D1,D3    *
  740.     MOVE.W    D1,D4    * COLONE
  741.     ADDQ.W    #1,D3    * COLONE SUIVANTE
  742.     SUBQ.W    #1,D4    * COLONE PRECEDANTE
  743.     MOVE.W    D3,D5    *
  744.     MOVE.W    D4,D6    * SAUVE COLONE POUR TAB_EXPL
  745.     
  746.     MULU.W    #9,D2    * LIGNE DANS TABLEAU
  747.     ADD.W    D2,D3    * +COLONE 
  748.     ADD.W    D2,D4    * +COLONE
  749.     
  750.     MOVE.B    0(A5,D3.W),D3
  751.     CMP.B    D3,D7
  752.     BNE.S    DIAG_MONTE
  753.     MOVE.B    0(A5,D4.W),D4
  754.     CMP.B    D4,D7
  755.     BNE.S    DIAG_MONTE
  756.     
  757.     ****** PIECE DROITE ******
  758.     MOVE.W    D0,(A6)+    * LIGNE
  759.     MOVE.W    D5,(A6)+    * COLONE
  760.  
  761.     ****** PIECE GAUCHE ******
  762.     MOVE.W    D0,(A6)+    * LIGNE
  763.     MOVE.W    D6,(A6)+    * COLONE
  764.     
  765.     MOVE.W    #1,FLAG
  766.  
  767.     ***********************************
  768.     ***** DIAGONALE MONTE VERS DROITE *
  769.     ***********************************
  770. DIAG_MONTE
  771.  
  772.     MOVE.W    D0,D2    * LIGNE 
  773.     MOVE.W    D0,D3
  774.     
  775.     MOVE.W    D1,D4    * COLONE
  776.     MOVE.W    D1,D5
  777.     
  778.     ADDQ.W    #1,D2    * LIGNE AU DESSUS
  779.     ADDQ.W    #1,D4    * COLONE DROITE
  780.     
  781.     MOVE.W    D2,(A6)
  782.     MOVE.W    D4,2(A6)
  783.     
  784.     SUBQ    #1,D3    * LIGNE DESSOUS
  785.     SUBQ    #1,D5    * COLONE GAUCHE
  786.     
  787.     MOVE.W    D3,4(A6)
  788.     MOVE.W    D5,6(A6)
  789.     
  790.     MULU.W    #9,D2
  791.     MULU.W    #9,D3
  792.     
  793.     ADD.W    D4,D2
  794.     ADD.W    D5,D3
  795.     
  796.     MOVE.B    0(A5,D2.W),D6
  797.     CMP.B    D6,D7
  798.     BNE.S    DIAG_DESCEND
  799.     MOVE.B    0(A5,D3.W),D6
  800.     CMP.B    D6,D7
  801.     BNE.S    DIAG_DESCEND
  802.     
  803.     ADD.L    #8,A6
  804.     
  805.     MOVE.W    #1,FLAG
  806.  
  807.     ******************************
  808.     ***** DIAG VERS BAS DROITE ***
  809.     ******************************
  810.     
  811. DIAG_DESCEND
  812.     
  813.     MOVE.W    D0,D2    * LIGNE 
  814.     MOVE.W    D0,D3
  815.     
  816.     MOVE.W    D1,D4    * COLONE
  817.     MOVE.W    D1,D5
  818.     
  819.     SUBQ.W    #1,D2    * LIGNE AU DESSOUS
  820.     ADDQ.W    #1,D4    * COLONE DROITE
  821.     
  822.     MOVE.W    D2,(A6)
  823.     MOVE.W    D4,2(A6)
  824.     
  825.     ADDQ    #1,D3    * LIGNE DESSUS
  826.     SUBQ    #1,D5    * COLONE GAUCHE
  827.     
  828.     MOVE.W    D3,4(A6)
  829.     MOVE.W    D5,6(A6)
  830.     
  831.     MULU.W    #9,D2
  832.     MULU.W    #9,D3
  833.     
  834.     ADD.W    D4,D2
  835.     ADD.W    D5,D3
  836.     
  837.     MOVE.B    0(A5,D2.W),D6
  838.     CMP.B    D6,D7
  839.     BNE.S    NEXT_ONE
  840.     MOVE.B    0(A5,D3.W),D6
  841.     CMP.B    D6,D7
  842.     BNE.S    NEXT_ONE
  843.     
  844.     ADD.L    #8,A6
  845.     
  846.     MOVE.W    #1,FLAG
  847.  
  848. NEXT_ONE
  849.     MOVE.L    #0,(A6)
  850.     CMP.W    #1,FLAG
  851.     BNE.S    DO_NEXT_ONE
  852.     MOVE.W    D0,(A6)+
  853.     MOVE.W    D1,(A6)+
  854.     
  855. DO_NEXT_ONE
  856.  
  857.     MOVE.W    #0,FLAG
  858.     ADDQ.W    #1,D1    *COLONE    SUIVANTE
  859.     CMP.W    #8,D1
  860.     BNE.S    OK_COL
  861.     MOVE.W    #1,D1
  862.     SUBQ.W    #1,D0
  863. OK_COL
  864.     CMP.W    #1,D0
  865.     BNE    NOT_YET_EXPL
  866.     MOVE.W    #1,DO_IT_NORMAL
  867.     BRA    DO_EXPLOSION 
  868.  
  869. NOT_YET_EXPL
  870.     BRA    TEST_TAB
  871. DISQUETTE
  872.     * D0=LIGNE DISK
  873.     * D1=COLONE DISK
  874.     * A5=TABLEAU
  875.     * A6=TABLEAU DES EXPLOSION
  876.     * NE PAS TOUCHER D0,D1,A5
  877.     
  878.     MOVE.W    D0,(A6)+
  879.     MOVE.W    D1,(A6)+
  880.     
  881.     MOVE.W    D0,D2    * LIGNE
  882.     MOVE.W    D1,D3    * COLONNE
  883.     SUBQ.W    #1,D3    * DROITE DISK
  884.     MULU.W    #9,D2
  885.     ADD.W    D3,D2
  886.     CMP.B    #$FF,(A5,D2.W)
  887.     BEQ    VERS_GAUCHE
  888.     CMP.B    #0,(A5,D2.W)
  889.     BEQ    VERS_GAUCHE
  890.     MOVE.W    D0,(A6)+
  891.     MOVE.W    D3,(A6)+
  892. VERS_GAUCHE
  893.     ADDQ.W    #2,D3    * GAUCHE DISK
  894.     MOVE.W    D0,D2
  895.     MULU.W    #9,D2
  896.     ADD.W    D3,D2
  897.     CMP.B    #$FF,(A5,D2.W)
  898.     BEQ    VERS_BAS
  899.     CMP.B    #0,(A5,D2.W)
  900.     BEQ    VERS_BAS
  901.     MOVE.W    D0,(A6)+
  902.     MOVE.W    D3,(A6)+
  903. VERS_BAS
  904.     MOVE.W    D0,D2
  905.     MOVE.W    D1,D3
  906.     ADDQ.W    #1,D2    * DESSOUS    
  907.     MOVE.W    D2,D4    * D4=LIGNE
  908.     MULU.W    #9,D2    * D2*9+D3=OFFSET TAB
  909.     ADD.W    D3,D2
  910.     CMP.B    #$FF,(A5,D2.W)    * ON EST EN BAS???
  911.     BEQ    VERS_HAUT    * OUI, BEIN ON VA VOIR AILLEUR
  912.     CMP.B    #0,(A5,D2.W)    * Y'A T'IL UNE PIECE?
  913.     BEQ    CONT_BAS_GAUCHE * OUI, ALORS ON CONTINUE.
  914.     MOVE.W    D4,(A6)+
  915.     MOVE.W    D3,(A6)+
  916. CONT_BAS_GAUCHE
  917.     ADDQ.W    #1,D3
  918.     MOVE.W    D4,D2
  919.     MULU.W    #9,D2
  920.     ADD.W    D3,D2
  921.     CMP.B    #$FF,(A5,D2.W)
  922.     BEQ    CONT_BAS_DROITE
  923.     CMP.B    #0,(A5,D2.W)
  924.     BEQ    CONT_BAS_DROITE
  925.     MOVE.W    D4,(A6)+
  926.     MOVE.W    D3,(A6)+
  927. CONT_BAS_DROITE
  928.     SUBQ    #2,D3
  929.     MOVE.W    D4,D2
  930.     MULU.W    #9,D2
  931.     ADD.W    D3,D2
  932.     CMP.B    #$FF,(A5,D2.W)
  933.     BEQ    VERS_HAUT
  934.     CMP.B    #0,(A5,D2.W)
  935.     BEQ    VERS_HAUT
  936.     MOVE.W    D4,(A6)+
  937.     MOVE.W    D3,(A6)+
  938. VERS_HAUT
  939.     MOVE.W    D0,D2
  940.     MOVE.W    D1,D3
  941.     SUBQ.W    #1,D2
  942.     CMP.W    #0,D2
  943.     BEQ    FIN_DISK
  944.     MOVE.W    D2,D4
  945.     MULU.W    #9,D2
  946.     ADD.W    D3,D2
  947.     CMP.B    #0,(A5,D2.W)
  948.     BEQ    HAUT_GAUCHE
  949.     MOVE.W    D4,(A6)+
  950.     MOVE.W    D3,(A6)+
  951. HAUT_GAUCHE
  952.     MOVE.W    D4,D2
  953.     ADDQ.W    #1,D3
  954.     MULU.W    #9,D2
  955.     ADD.W    D3,D2
  956.     CMP.B    #$FF,(A5,D2.W)
  957.     BEQ    HAUT_DROITE
  958.     CMP.B    #0,(A5,D2.W)
  959.     BEQ    HAUT_DROITE
  960.     MOVE.W    D4,(A6)+
  961.     MOVE.W    D3,(A6)+
  962. HAUT_DROITE
  963.     MOVE.W    D4,D2
  964.     SUBQ.W    #2,D3
  965.     MULU.W    #9,D2
  966.     ADD.W    D3,D2
  967.     CMP.B    #$FF,(A5,D2.W)
  968.     BEQ    FIN_DISK
  969.     CMP.B    #0,(A5,D2.W)
  970.     BEQ    FIN_DISK
  971.     MOVE.W    D4,(A6)+
  972.     MOVE.W    D3,(A6)+
  973. FIN_DISK
  974.     MOVE.L    #0,(A6)+
  975.     MOVE.W    #2,EXPL_TYPE
  976.     
  977.     MOVE.W    #0,DO_IT_NORMAL
  978.     CMP.W    #1,SOUND
  979.     BNE    NO_DISK_SPL
  980.     MOVE.W    #0,THE_SPL    *SPACE.RAW
  981.     BSR    PLAY_SPE
  982. NO_DISK_SPL
  983.     
  984.     BRA    DO_EXPLOSION
  985. DO_BULLE
  986.     * D0=LIGNE DISK
  987.     * D1=COLONE DISK
  988.     * A5=TABLEAU
  989.     * A6=TABLEAU DES EXPLOSION
  990.     * NE PAS TOUCHER D0,D1,A5
  991.     
  992.     MOVE.W    D0,D2    * LIGNE
  993.     
  994.     MOVE.W    #4,D5
  995. LOOP_BULLE
  996.     SUBQ.W    #1,D2
  997.     MOVE.W    D2,D4
  998.     MULU.W    #9,D2
  999.     ADD.W    D1,D2
  1000.     CMP.B    #0,(A5,D2.W)
  1001.     BEQ    FIN_BULLE
  1002.     MOVE.W    D4,D2
  1003.     DBRA    D5,LOOP_BULLE
  1004.     
  1005.     MOVE.W    D0,(A6)+
  1006.     MOVE.W    D1,(A6)+
  1007.     MOVE.L    #0,(A6)+
  1008.     MOVE.W    #2,EXPL_TYPE
  1009.     
  1010.     MOVE.W    #0,DO_IT_NORMAL
  1011.     CMP.W    #1,SOUND
  1012.     BNE    NO_BULLE_SPL
  1013.     MOVE.W    #1,THE_SPL    * BULLE.RAW
  1014.     BSR    PLAY_SPE
  1015. NO_BULLE_SPL
  1016.  
  1017.     
  1018.     BRA    DO_EXPLOSION
  1019. FIN_BULLE
  1020.     BRA    TEST_THEM
  1021.     
  1022. TEST_MCS
  1023.     * D0=LIGNE DISK
  1024.     * D1=COLONE DISK
  1025.     * A5=TABLEAU
  1026.     * A6=TABLEAU DES EXPLOSION
  1027.     * NE PAS TOUCHER D0,D1,A5
  1028.     * D7=13 -> M
  1029.     MOVE.L    A6,A3
  1030.     MOVE.L    A6,A4
  1031.     ADDQ.L    #4,A3
  1032.     MOVE.W    D7,D6    * M
  1033.     MOVE.W    D7,D5    * M
  1034.     ADDQ    #1,D5    * C
  1035.     ADDQ    #2,D6    * S
  1036.     
  1037.     MOVE.W    D0,(A6)+    * M DANS TAB_EXPL
  1038.     MOVE.W    D1,(A6)+    * 
  1039.     
  1040.     * S
  1041.     * C
  1042.     * M
  1043.     
  1044.     MOVE.W    D0,D2    * LIGNE
  1045.     SUBQ.W    #1,D2    * LIGNE AU DESSUS
  1046.     MOVE.W    D2,D3    * POUR TAB_EXPL
  1047.     MULU.W    #9,D2
  1048.     ADD.W    D1,D2    * PIECE DESSUS
  1049.     
  1050.     MOVE.B    (A5,D2.W),D4
  1051.     CMP.B    D4,D5
  1052.     BNE    CONT_M_1
  1053.     
  1054.     MOVE.W    D3,(A6)+    * C DANS TAB_EXPL
  1055.     MOVE.W    D1,(A6)+    * 
  1056.     
  1057.     
  1058.     MOVE.W    D0,D2
  1059.     SUBQ.W    #2,D2    * 2 PIECES AU DESSUS
  1060.     MOVE.W    D2,D3    * POUR METTRE S DANS TAB_EXPL 
  1061.     MULU.W    #9,D2    
  1062.     ADD.W    D1,D2
  1063.     
  1064.     MOVE.B    (A5,D2.W),D4
  1065.     CMP.B    D4,D6
  1066.     BNE    CONT_M_1
  1067.     
  1068.     MOVE.W    D3,(A6)+
  1069.     MOVE.W    D1,(A6)+
  1070.     BRA    OK_MCS
  1071.     
  1072.     * M
  1073.     * C
  1074.     * S
  1075. CONT_M_1
  1076.     MOVE.L    A3,A6    * ON RECUPERE A6
  1077.     MOVE.L    #0,(A6)
  1078.     MOVE.L    #0,4(A6)
  1079.  
  1080.     MOVE.W    D0,D2    * LIGNE
  1081.     ADDQ.W    #1,D2    * LIGNE AU DESSOUS
  1082.     MOVE.W    D2,D3    * POUR TAB_EXPL
  1083.     MULU.W    #9,D2
  1084.     ADD.W    D1,D2    * PIECE DESSOUS
  1085.     
  1086.     MOVE.B    (A5,D2.W),D4
  1087.     CMP.B    D4,D5
  1088.     BNE    CONT_M_2
  1089.     
  1090.     MOVE.W    D3,(A6)+    * C DANS TAB_EXPL
  1091.     MOVE.W    D1,(A6)+    * 
  1092.     
  1093.     
  1094.     MOVE.W    D0,D2
  1095.     ADDQ.W    #2,D2    * 2 PIECES AU DESSOUS
  1096.     MOVE.W    D2,D3    * POUR METTRE S DANS TAB_EXPL 
  1097.     MULU.W    #9,D2    * 
  1098.     ADD.W    D1,D2
  1099.     
  1100.     MOVE.B    (A5,D2.W),D4
  1101.     CMP.B    D4,D6
  1102.     BNE    CONT_M_2
  1103.     MOVE.W    D3,(A6)+
  1104.     MOVE.W    D1,(A6)+
  1105.     BRA    OK_MCS
  1106.     
  1107.     * MCS
  1108. CONT_M_2
  1109.     MOVE.L    A3,A6    * ON RECUPERE A6
  1110.     MOVE.L    #0,(A6)
  1111.     MOVE.L    #0,4(A6)
  1112.     
  1113.     MOVE.W    D0,D2
  1114.     MOVE.W    D1,D3
  1115.     
  1116.     ADDQ.W    #1,D3    * PIECE DE DROITE
  1117.     MULU.W    #9,D2
  1118.     ADD.W    D3,D2
  1119.     MOVE.B    (A5,D2.W),D4
  1120.     CMP.B    D4,D5    * C
  1121.     BNE    CONT_M_3    
  1122.     
  1123.     MOVE.W    D0,(A6)+    * C DANS TAB_EXPL
  1124.     MOVE.W    D3,(A6)+
  1125.  
  1126.     MOVE.W    D0,D2    
  1127.     ADDQ.W    #1,D3    * 2eme PIECE A DROITE
  1128.     
  1129.     MULU.W    #9,D2
  1130.     ADD.W    D3,D2
  1131.     MOVE.B    (A5,D2.W),D4
  1132.     CMP.B    D4,D6    * S
  1133.     BNE    CONT_M_3
  1134.     
  1135.     MOVE.W    D0,(A6)+
  1136.     MOVE.W    D3,(A6)+
  1137.     BRA    OK_MCS
  1138.     
  1139.     * SCM -> BEIN OUI MCS A L'ENVERS QUOI!
  1140. CONT_M_3
  1141.     MOVE.L    A3,A6    * ON RECUPERE A6
  1142.     MOVE.L    #0,(A6)
  1143.     MOVE.L    #0,4(A6)
  1144.     
  1145.     MOVE.W    D0,D2
  1146.     MOVE.W    D1,D3
  1147.     
  1148.     SUBQ.W    #1,D3    * PIECE DE GAUCHE
  1149.     MULU.W    #9,D2
  1150.     ADD.W    D3,D2
  1151.     MOVE.B    (A5,D2.W),D4
  1152.     CMP.B    D4,D5    * C
  1153.     BNE    CONT_M_4
  1154.     
  1155.     MOVE.W    D0,(A6)+    * C DANS TAB_EXPL
  1156.     MOVE.W    D3,(A6)+
  1157.  
  1158.     MOVE.W    D0,D2    
  1159.     SUBQ.W    #1,D3    * 2eme PIECE A GAUCHE
  1160.     
  1161.     MULU.W    #9,D2
  1162.     ADD.W    D3,D2
  1163.     MOVE.B    (A5,D2.W),D4
  1164.     CMP.B    D4,D6    * S
  1165.     BNE    CONT_M_4
  1166.     
  1167.     MOVE.W    D0,(A6)+
  1168.     MOVE.W    D3,(A6)+
  1169.     BRA    OK_MCS
  1170.     
  1171.     * M
  1172.     *  C
  1173.     *   S
  1174. CONT_M_4
  1175.     MOVE.L    A3,A6    * ON RECUPERE A6
  1176.     MOVE.L    #0,(A6)
  1177.     MOVE.L    #0,4(A6)
  1178.     
  1179.     MOVE.W    D0,D2
  1180.     MOVE.W    D1,D3
  1181.     ADDQ.W    #1,D2    * DIAG BAS DROITE
  1182.     ADDQ.W    #1,D3    * 
  1183.     MOVE.L    D2,A1    * YA PLUS DE REG DE DONNEE !!
  1184.     MULU.W    #9,D2
  1185.     ADD.W    D3,D2
  1186.     MOVE.B    (A5,D2.W),D4
  1187.     CMP.B    D4,D5    * C
  1188.     BNE    CONT_M_5
  1189.     
  1190.     MOVE.L    A1,D2
  1191.     MOVE.W    D2,(A6)+    * C DANS TAB_EXPL
  1192.     MOVE.W    D3,(A6)+    *
  1193.     
  1194.     ADDQ.W    #1,D2
  1195.     ADDQ.W    #1,D3
  1196.     MOVE.L    D2,A1
  1197.     MULU.W    #9,D2
  1198.     ADD.W    D3,D2
  1199.     MOVE.B    (A5,D2.W),D4
  1200.     CMP.B    D4,D6    * S
  1201.     BNE    CONT_M_5
  1202.     
  1203.     MOVE.L    A1,D2
  1204.     MOVE.W    D2,(A6)+
  1205.     MOVE.W    D3,(A6)+
  1206.     BRA    OK_MCS
  1207.         
  1208.     * S
  1209.     *  C
  1210.     *   M
  1211. CONT_M_5
  1212.  
  1213.     MOVE.L    A3,A6    * ON RECUPERE A6
  1214.     MOVE.L    #0,(A6)
  1215.     MOVE.L    #0,4(A6)
  1216.     
  1217.     MOVE.W    D0,D2
  1218.     MOVE.W    D1,D3
  1219.     SUBQ.W    #1,D2    * DIAG HAUT GAUCHE
  1220.     SUBQ.W    #1,D3    * 
  1221.     MOVE.L    D2,A1    * YA PLUS DE REG DE DONNEE !!
  1222.     MULU.W    #9,D2
  1223.     ADD.W    D3,D2
  1224.     MOVE.B    (A5,D2.W),D4
  1225.     CMP.B    D4,D5    * C
  1226.     BNE    CONT_M_6
  1227.     
  1228.     MOVE.L    A1,D2
  1229.     MOVE.W    D2,(A6)+    * C DANS TAB_EXPL
  1230.     MOVE.W    D3,(A6)+    *
  1231.     
  1232.     SUBQ.W    #1,D2
  1233.     SUBQ.W    #1,D3
  1234.     MOVE.L    D2,A1
  1235.     MULU.W    #9,D2
  1236.     ADD.W    D3,D2
  1237.     MOVE.B    (A5,D2.W),D4
  1238.     CMP.B    D4,D6    * S
  1239.     BNE    CONT_M_6
  1240.     
  1241.     MOVE.L    A1,D2
  1242.     MOVE.W    D2,(A6)+
  1243.     MOVE.W    D3,(A6)+
  1244.     BRA    OK_MCS
  1245.     
  1246.     *   S
  1247.     *  C
  1248.     * M
  1249. CONT_M_6
  1250.     
  1251.     MOVE.L    A3,A6    * ON RECUPERE A6
  1252.     MOVE.L    #0,(A6)
  1253.     MOVE.L    #0,4(A6)
  1254.     
  1255.     MOVE.W    D0,D2
  1256.     MOVE.W    D1,D3
  1257.     SUBQ.W    #1,D2    * DIAG HAUT DROITE
  1258.     ADDQ.W    #1,D3    * 
  1259.     MOVE.L    D2,A1    * YA PLUS DE REG DE DONNEE !!
  1260.     MULU.W    #9,D2
  1261.     ADD.W    D3,D2
  1262.     MOVE.B    (A5,D2.W),D4
  1263.     CMP.B    D4,D5    * C
  1264.     BNE    CONT_M_7
  1265.     
  1266.     MOVE.L    A1,D2
  1267.     MOVE.W    D2,(A6)+    * C DANS TAB_EXPL
  1268.     MOVE.W    D3,(A6)+    *
  1269.     
  1270.     SUBQ.W    #1,D2
  1271.     ADDQ.W    #1,D3
  1272.     MOVE.L    D2,A1
  1273.     MULU.W    #9,D2
  1274.     ADD.W    D3,D2
  1275.     MOVE.B    (A5,D2.W),D4
  1276.     CMP.B    D4,D6    * S
  1277.     BNE    CONT_M_7
  1278.     
  1279.     MOVE.L    A1,D2
  1280.     MOVE.W    D2,(A6)+
  1281.     MOVE.W    D3,(A6)+
  1282.     BRA    OK_MCS
  1283.     
  1284.     *   M
  1285.     *  C
  1286.     * S
  1287. CONT_M_7
  1288.     
  1289.     MOVE.L    A3,A6    * ON RECUPERE A6
  1290.     MOVE.L    #0,(A6)
  1291.     MOVE.L    #0,4(A6)
  1292.     
  1293.     MOVE.W    D0,D2
  1294.     MOVE.W    D1,D3
  1295.     ADDQ.W    #1,D2    * DIAG BAS GAUCHE
  1296.     SUBQ.W    #1,D3    * 
  1297.     MOVE.L    D2,A1    * YA PLUS DE REG DE DONNEE !!
  1298.     MULU.W    #9,D2
  1299.     ADD.W    D3,D2
  1300.     MOVE.B    (A5,D2.W),D4
  1301.     CMP.B    D4,D5    * C
  1302.     BNE    CONT_M_8
  1303.     
  1304.     MOVE.L    A1,D2
  1305.     MOVE.W    D2,(A6)+    * C DANS TAB_EXPL
  1306.     MOVE.W    D3,(A6)+    *
  1307.     
  1308.     ADDQ.W    #1,D2
  1309.     SUBQ.W    #1,D3
  1310.     MOVE.L    D2,A1
  1311.     MULU.W    #9,D2
  1312.     ADD.W    D3,D2
  1313.     MOVE.B    (A5,D2.W),D4
  1314.     CMP.B    D4,D6    * S
  1315.     BNE    CONT_M_8
  1316.     
  1317.     MOVE.L    A1,D2
  1318.     MOVE.W    D2,(A6)+
  1319.     MOVE.W    D3,(A6)+
  1320.     BRA    OK_MCS
  1321. CONT_M_8
  1322.     MOVE.L    A4,A6    * ON RECUPERE A6
  1323.     MOVE.L    #0,(A6)
  1324.     MOVE.L    #0,4(A6)
  1325.     BRA    DO_NEXT_ONE
  1326. OK_MCS
  1327.     MOVE.W    #0,NB_SCANNED
  1328.     MOVE.W    #2,EXPL_TYPE
  1329.     MOVE.B    #12,THE_PIECE
  1330.     BSR    GET_ALL_PIECES
  1331.     MOVE.W    NB_MUR,D0
  1332.     ADD.W    NB_SCANNED,D0
  1333.     ADD.W    D0,NB_MUR
  1334.     LEA    SCANNED,A3
  1335. LOOP_WALL
  1336.     CMP.L    #0,(A3)
  1337.     BEQ    OK_TO_EXPLOSION
  1338.     MOVE.L    (A3)+,(A6)+
  1339.     BRA    LOOP_WALL
  1340. OK_TO_EXPLOSION
  1341.     CMP.W    #1,SOUND
  1342.     BNE    NO_MCS_SPL
  1343.     MOVE.W    #10,THE_SPL    *SPACE.RAW
  1344.     BSR    PLAY_SPE
  1345. NO_MCS_SPL
  1346.  
  1347.     BRA    DO_EXPLOSION
  1348.     
  1349. DO_SMILE    MOVEM.L    D0-D7/A0-A6,-(A7)
  1350.     CMP.W    #1,SOUND
  1351.     BNE    NO_SMILE_SPL
  1352.     MOVE.W    #6,THE_SPL    *SMILE.RAW
  1353.     BSR    PLAY_SPE
  1354. NO_SMILE_SPL
  1355.  
  1356.     LEA    TABLEAU,A5
  1357.     MOVE.W    CUR_LIGNE,D0
  1358.     MOVE.W    CUR_COLONE,D1
  1359.     MOVE.W    D0,D2
  1360.     CMP.B    #16,CUR_PIECE
  1361.     BNE    CONT_SM_1
  1362.     SUB.W    #2,D2
  1363.     BRA    OK_FOR_SMILE
  1364. CONT_SM_1
  1365.     CMP.B    #16,CUR_PIECE+1
  1366.     BNE    OK_FOR_SMILE
  1367.     SUB.W    #1,D2
  1368. OK_FOR_SMILE
  1369.     ADDQ.W    #1,D2    * PIECE DU DESSOUS
  1370.     MULU.W    #9,D2
  1371.     ADD.W    D1,D2
  1372.     MOVE.B    (A5,D2.W),D4
  1373.     CMP.B    #$FF,D4
  1374.     BEQ    FIN_SMILE
  1375.     MOVE.B    D4,THE_PIECE
  1376.     BSR    GET_ALL_PIECES
  1377.     LEA    SCANNED,A1
  1378. LOOP_SMILE
  1379.     MOVEQ    #0,D5
  1380.     MOVEQ    #0,D6
  1381.     MOVEQ    #0,D1
  1382.     CMP.L    #0,(A1)
  1383.     BEQ    FIN_SMILE
  1384.     MOVE.W    (A1)+,D5
  1385.     MOVE.W    (A1)+,D6
  1386.     MOVE.W    NB_PIECE,D7
  1387.     BSR    RANDOM
  1388.     MULU.W    #9,D5
  1389.     ADD.W    D6,D5
  1390.     MOVE.B    D7,(A5,D5.W)
  1391.     MOVE.W    D6,D1
  1392.     MOVE.L    A5,A0    
  1393.     REPT    4
  1394.     JSR    WAIT_VBL
  1395.     ENDR
  1396.     BSR    REDRAW
  1397.     
  1398.     BRA    LOOP_SMILE
  1399. FIN_SMILE
  1400.     MOVEM.L    (A7)+,D0-D7/A0-A6
  1401.     BRA    NO_SMILE
  1402.     
  1403.     
  1404.  
  1405.     ********************************
  1406.     *****     BOOOUUUMMMMM     *****
  1407.     ********************************
  1408. DO_EXPLOSION
  1409.  
  1410.     ADDQ.W    #1,REDONDANCE
  1411.     LEA    TAB_EXPL,A5
  1412. TRIE_TAB
  1413.     LEA    TAB_EXPL_TRIE,A4
  1414.     MOVE.L    (A5)+,D0
  1415.     CMP.L    #0,D0
  1416.     BEQ.S    DO_EXPLODE
  1417. TRIE_NEXT
  1418.     MOVE.L    (A4),D2
  1419.     CMP.L    D0,D2
  1420.     BEQ    TRIE_TAB
  1421.     CMP.L    #0,(A4)
  1422.     BEQ.S    OK_PUT
  1423.     ADDQ.L    #4,A4
  1424.     BRA.S    TRIE_NEXT
  1425.  
  1426. OK_PUT
  1427.     MOVE.L    D0,(A4)+
  1428.     BRA    TRIE_TAB
  1429.  
  1430. DO_EXPLODE
  1431.     LEA    TABLEAU,A4
  1432.     LEA    PIECE,A3
  1433.     ADD.W    PTR_PIECE,A3
  1434. NOT_HERE
  1435.     CMP.B    #0,(A3)+
  1436.     BNE    NOT_HERE
  1437.     SUBQ    #1,A3
  1438.     LEA    TAB_EXPL_TRIE,A5
  1439. LOOP_GET_PIECE
  1440.     CMP.L    #0,(A5)
  1441.     BEQ.S    BOUM
  1442.     MOVE.W    (A5)+,D0
  1443.     MOVE.W    (A5)+,D1
  1444.     MULU.W    #9,D0
  1445.     ADD.W    D1,D0
  1446.     MOVE.B    (A4,D0.W),(A3)+
  1447.     ADDQ.W    #1,PTR_PIECE
  1448.     BRA    LOOP_GET_PIECE    
  1449. BOUM
  1450.  
  1451.     LEA    TAB_EXPL_TRIE,A5
  1452.     CMP.L    #0,(A5)
  1453.     BEQ    MAIN_LOOP
  1454.  
  1455.     CMP.W    #1,SOUND
  1456.     BNE    NO_NORMAL_SPL
  1457.     CMP.W    #1,DO_IT_NORMAL
  1458.     BNE    NO_NORMAL_SPL
  1459.     MOVE.W    #4,THE_SPL    *NORMAL.RAW
  1460.     BSR    PLAY_SPE
  1461. NO_NORMAL_SPL
  1462.  
  1463.  
  1464.     LEA    TABLEAU,A4
  1465.     CMP.W    #2,EXPL_TYPE
  1466.     BNE    EXPL_NORMAL
  1467.     LEA    TAB_EXPL2,A3
  1468.     BRA    ON_Y_GO
  1469. EXPL_NORMAL
  1470.     LEA    TAB_EXPL1,A3
  1471. ON_Y_GO
  1472.     ADDQ.W    #1,NB_EXPL
  1473.     MOVEQ    #0,D6
  1474.     MOVE.W    #4,D7
  1475. LOOP_EXPL
  1476.     MOVE.L    (A3,D6.W*4),SPRITE
  1477.     LEA    TAB_EXPL_TRIE,A5
  1478. LOOP_EXPL_INT
  1479.     CMP.L    #0,(A5)
  1480.     BEQ.S    FIN_EXPL
  1481.     MOVEQ    #0,D0
  1482.     MOVE.L    D0,D1
  1483.     MOVE.L    D0,D2
  1484.     MOVE.L    D0,D3
  1485.     MOVE.W    (A5)+,D0    * LIGNE
  1486.     MOVE.W    (A5)+,D1    * COLONE
  1487.     MOVE.W    D0,D2
  1488.     MOVE.W    D1,D3
  1489.     MULU.W    #9,D0
  1490.     ADD.W    D1,D0
  1491.     MOVE.B    #0,(A4,D0.W)
  1492.     SUBQ    #1,D2
  1493.     MULU.L    #640*32,D2    * Y SPRITE
  1494.     SUB.L    #16*640,D2
  1495.     MULU.L    #32,D3    * X SPRITE
  1496.     ADD.L    #16,D3
  1497.     ADD.L    D3,D2    * OFFSET ECRANRO
  1498.     MOVE.L    D2,OFFSET
  1499.     BSR    AFF_SPRT
  1500.     BRA.S    LOOP_EXPL_INT
  1501. FIN_EXPL        
  1502.     ADDQ.W    #1,D6
  1503.     CMP.W    #5,D6
  1504.     BEQ.S    STOP_EXPL
  1505.     REPT 5
  1506.     BSR    WAIT_VBL
  1507.     ENDR
  1508.     DBRA    D7,LOOP_EXPL
  1509. STOP_EXPL
  1510.     MOVE.L    #265,D0
  1511.     LEA    TAB_EXPL,A1
  1512.     LEA    TAB_EXPL_TRIE,A2
  1513. CLR_TAB_EXPL
  1514.     MOVE.L    #0,(A1)+
  1515.     MOVE.L    #0,(A2)+
  1516.     DBRA    D0,CLR_TAB_EXPL
  1517.     
  1518.     ************************************
  1519.     ***** RETOMBURE DES PIECES ICI *****
  1520.     ************************************
  1521.     
  1522.     * ATTENDRE FIN SPL
  1523.     
  1524.     LEA    TABLEAU,A0
  1525.     MOVEQ    #19,D0    * 19 EME LIGNE
  1526.     
  1527.     MOVEQ    #0,D1    * COLONE 0
  1528.     MOVEQ    #6,D2    * 7 COLONES A TESTER
  1529. RETOMB_LOOP
  1530.     ADDQ.W    #1,D1    * COLONE SUIVANTE
  1531.     MOVE.W    D0,A1
  1532. COLONE_LOOP
  1533.     SUBQ.W    #1,A1    * LIGNE AU DESSUS
  1534.     CMP.W    #0,A1    * ON EST EN HAUT?
  1535.     BEQ.S    HAUT_COLONE    * OUI !!!
  1536.     MOVE.W    A1,D3    * LIGNE
  1537.     MULU.W    #9,D3    * LIGNE*9
  1538.     ADD.W    D1,D3    * +COLONE
  1539.     CMP.B    #0,0(A0,D3.W)  * TROUS ??
  1540.     BNE.S    COLONE_LOOP    * NON ALORS ON VA VOIR 
  1541.             * AU DESSUS
  1542.             * SINON
  1543.     MOVE.W    A1,D5    * LIGNE
  1544.     MOVE.W    D5,D7
  1545.     MOVE.W    D5,D4
  1546.     
  1547. COPY_COLONE    
  1548.     SUBQ.W    #1,D5
  1549.     CMP.W    #0,D5
  1550.     BEQ    COLONE_LOOP
  1551.     MOVE.W    D5,D6    * LIGNE DU DESSUS
  1552.     MOVE.W    D5,D4    * LIGNE DU DESSUS
  1553.     MULU.W    #9,D6    * LIGNE DESSUS*9
  1554.     ADD.W    D1,D6    * +COLONE
  1555.     MOVE.W    D6,D3
  1556. TEST_0
  1557.     CMP.B    #0,0(A0,D6.W)
  1558.     BNE.S    OK_COPY
  1559.     SUB.W    #9,D6
  1560.     SUBQ.W    #1,D4
  1561.     CMP.W    #0,D4
  1562.     BEQ.S    HAUT_COLONE
  1563.     BRA.S    TEST_0
  1564. OK_COPY
  1565.     MOVE.B    0(A0,D6.W),9(A0,D3.W) *ET ON COPY EN DESSOUS
  1566.     MOVE.B    #0,0(A0,D6.W)
  1567.     BRA    COPY_COLONE    * JUSQU'EN HAUT
  1568. HAUT_COLONE
  1569.     BSR.S    REDRAW    *ON REAFICHE LA COLONE
  1570.  
  1571.     DBRA    D2,RETOMB_LOOP
  1572.     
  1573. ICI
  1574.     BRA    LOOP_TEST_TAB
  1575.     
  1576.     ********************************
  1577.     **  REAFICHER LA COLONE APRES **
  1578.     **    LES EXPLOSIONS ET LA    ** 
  1579.     **         RETOMBURE          **
  1580.     ********************************
  1581.  
  1582. REDRAW    * D1=N° COLONE
  1583.     * A0=TABLEAU
  1584.     MOVEM.L    D0-D7/A0-A6,-(A7)
  1585.     MOVE.L    A0,A5    *TABLEAU
  1586.     LEA    TAB_SPR,A4
  1587.     MOVEQ    #0,D4    * LIGNE DEPART
  1588.     MOVE.L    D1,D5    * COLONE
  1589.     MULU.L    #32,D5    * COLONE*32
  1590.     ADD.L    #16,D5    * +BORD=X SPRITE
  1591. LOOP_REDRAW
  1592.     ADDQ    #1,D4
  1593.     CMP.W    #19,D4
  1594.     BEQ.S    FIN_REDRAW
  1595.     MOVE.L    D4,D6
  1596.     SUBQ    #1,D6
  1597.     MULU.L    #32,D6    *NO LIGNE SCREEN
  1598.     SUB.L    #16,D6
  1599.     MULU.L    #640,D6
  1600.     ADD.L    D5,D6
  1601.     MOVE.L    D6,OFFSET
  1602.     MOVE.L    D4,D6    * LIGNE
  1603.     MULU.L    #9,D6    * LIGNE*9
  1604.     ADD.L    D1,D6    * +COLONE
  1605.     MOVEQ    #0,D3
  1606.     MOVE.B    0(A5,D6.W),D3    * D3=PIECE
  1607.     MOVE.L    0(A4,D3.W*4),SPRITE    *SPRITE
  1608.     
  1609.     BSR    AFF_SPRT
  1610.     BRA.S    LOOP_REDRAW    
  1611. FIN_REDRAW
  1612.     
  1613.     MOVEM.L    (A7)+,D0-D7/A0-A6
  1614.     RTS
  1615.     
  1616.     ********************************
  1617.     **** AFFICHE TETE POUR NIVEAU **
  1618.     ********************************
  1619. AFF_TET
  1620.     CMP.W    #1,SOUND
  1621.     BNE    NO_TET_SPL
  1622.     MOVE.W    #11,THE_SPL    *SPACE.RAW
  1623.     BSR    PLAY_SPE
  1624. NO_TET_SPL
  1625.  
  1626.     BSR    WAIT_VBL
  1627.     MOVEM.L    D0-D7/A0-A6,-(A7)
  1628.     MOVE.L    ECRANRO,A0
  1629.     ADD.L    #(240*640)+320,A0
  1630.     MOVE.L    #LEVEL,A1
  1631.     MOVE.L    #199,D0
  1632. LOOP_TET
  1633.     MOVEQ    #(320/4)-1,D1
  1634. LOOP_TET2
  1635.     MOVE.L    (A1)+,(A0)+
  1636.     DBRA    D1,LOOP_TET2
  1637.     LEA    320(A0),A0
  1638.     DBRA    D0,LOOP_TET
  1639.     
  1640.     
  1641.     MOVE.L    #(256*640)+(320+128+64),OFFSET
  1642.     LEA    TAB_DIGIT,A4
  1643.     
  1644.     MOVE.W    LEV_PTR,D2
  1645.     CMP.W    #40,D2
  1646.     BLT    NOT_10
  1647.     MOVE.W    #4,D2
  1648.     MOVE.L    (A4,D2.W),SPRITE
  1649.     BSR    AFF_SPRT
  1650.     ADD.L    #32,OFFSET
  1651.     MOVE.W    #0,D2
  1652. NOT_10
  1653.     MOVE.L    (A4,D2.W),SPRITE
  1654.     BSR    AFF_SPRT
  1655.  
  1656.     MOVEM.L    (A7)+,D0-D7/A0-A6
  1657.     RTS
  1658.     
  1659.     *********************************
  1660.     ****  CHARGE TETE DU NIVEAU  ****
  1661.     *********************************
  1662. LOAD_LEVEL
  1663.     MOVEM.L    D0-D7/A0-A6,-(A7)
  1664.     MOVEQ    #0,D0
  1665.     MOVE.W    LEV_PTR,D0
  1666.     
  1667.     IFEQ    DEMO
  1668.     MOVE.L    #LEV_LOAD,A0
  1669.     ADD.L    D0,A0
  1670.     MOVE.L    (A0),D7
  1671.     
  1672.     
  1673.     MOVE.W    #0,-(A7)
  1674.     MOVE.L    D7,-(A7)
  1675.     MOVE.W    #$3D,-(A7)
  1676.     TRAP    #1
  1677.     ADDQ.L    #8,A7
  1678.     
  1679.     MOVE.W    D0,FHANDLE
  1680.     
  1681.     MOVE.L    #LEVEL,-(A7)
  1682.     MOVE.L    #64000,-(A7)
  1683.     MOVE.W    FHANDLE,-(A7)
  1684.     MOVE.W    #$3F,-(A7)
  1685.     TRAP    #1
  1686.     LEA    12(A7),A7
  1687.     
  1688.     MOVE.W    FHANDLE,-(A7)
  1689.     MOVE.W    #$3E,-(A7)
  1690.     TRAP    #1
  1691.     ADDQ.L    #4,A7
  1692.     
  1693.     ADDQ.W    #4,LEV_PTR
  1694.     ENDC
  1695.     MOVEM.L    (A7)+,D0-D7/A0-A6
  1696.     RTS
  1697.     
  1698.     *************************************
  1699.     ** ON SAUVE L'ENVIRONEMENT POUR NE **
  1700.     ** PAS TOUT CASER QUAND ON RESSORT **
  1701.     *************************************
  1702. SAVE_ENV
  1703.     
  1704.     SYNCRO
  1705.     LEA    $FFFF9800.W,A0
  1706.     LEA    OLD_PAL,A1
  1707.     MOVE.L    #255,D0
  1708. LOOP_S_PAL
  1709.     MOVE.L    (A0)+,(A1)+
  1710.     DBRA    D0,LOOP_S_PAL
  1711.     
  1712.     MOVE.W    #-1,-(A7)
  1713.     MOVE.W    #$58,-(A7)
  1714.     TRAP    #14
  1715.     ADDQ.L    #4,A7
  1716.     MOVE.W    D0,OLD_REZ
  1717.     
  1718.     MOVE.L    $44E.W,OLD_PHYS    
  1719.     
  1720.     RTS
  1721.     
  1722.     ***************************************
  1723.     ** ON RESTORE L'ENVIRONEMENT POUR NE **
  1724.     **  PAS TOUT CASSER QUAND ON RESSORT **
  1725.     ***************************************
  1726. REST_ENV
  1727.     IFEQ    DEBUG
  1728.     MOVE.L    $4F2,A0
  1729.     MOVE.W    2(A0),D0
  1730.     CMP.W    #$0402,D0
  1731.     BGT    SET_MODE
  1732.     MOVE.W    OLD_REZ,D7
  1733.     BSR    SETMODE
  1734.     BRA    OK_FOR_MODE
  1735. SET_MODE
  1736.     MOVE.W    OLD_REZ,-(A7)
  1737.     MOVE.W    #$58,-(A7)
  1738.     TRAP    #14
  1739.     ADDQ.L    #4,A7
  1740. OK_FOR_MODE
  1741.     LEA    OLD_PHYS,A0
  1742.     MOVE.B    1(A0),$FFFF8201.W
  1743.     MOVE.B    2(A0),$FFFF8203.W
  1744.     MOVE.B    3(A0),$FFFF820D.W
  1745.     MOVE.L    (A0),$44E.W
  1746.     ELSE
  1747.     MOVE.W    OLD_REZ,-(A7)
  1748.     MOVE.W    #3,-(A7)
  1749.     MOVE.L    OLD_PHYS,-(A7)
  1750.     MOVE.L    OLD_PHYS,-(A7)
  1751.     MOVE.W    #5,-(A7)
  1752.     TRAP    #14
  1753.     LEA    14(A7),A7
  1754.     ENDC
  1755.     IFEQ    DEBUG
  1756.     SYNCRO
  1757.     LEA    OLD_PAL,A0
  1758.     MOVEQ    #1,D0
  1759.     BSR    FADE_IN256
  1760.     ENDC
  1761.     MOVE.W    OLD_484,$484.W
  1762.     RTS
  1763.         
  1764. NEXT_LEVEL
  1765.     IFEQ    DEMO
  1766.     BSR    LOAD_LEVEL
  1767.     BSR    AFF_TET
  1768.     
  1769.     CMP.W    #4*10,LEV_PTR
  1770.     BNE.S    GO_ON_THIS_LEVEL
  1771.     MOVE.W    #0,LEV_PTR
  1772. GO_ON_THIS_LEVEL
  1773.     ADDQ.W    #1,CUR_LEVEL
  1774.     MOVE.W    CUR_LEVEL,D7
  1775.     LEA    CASE_LEVEL,A0
  1776. CASE_1_2_3
  1777.     CMP2.B    (A0),D7
  1778.     BCS.S    TO_4_5
  1779.     MOVE.W    #3,WAIT_Y
  1780.     MOVE.W    #3,WAIT_Y_SAVE
  1781.     MOVE.W    #2,INC_Y
  1782.     RTS
  1783. TO_4_5
  1784.     ADDQ.L    #2,A0
  1785.     CMP2.B    (A0),D7
  1786.     BCS.S    TO_7
  1787.     MOVE.W    #2,WAIT_Y
  1788.     MOVE.W    #2,WAIT_Y_SAVE
  1789.     MOVE.W    #2,INC_Y
  1790.     RTS
  1791. TO_7
  1792.     CMP.W    #7,D7    
  1793.     BNE.S    TO_9
  1794.     MOVE.W    #2,WAIT_Y
  1795.     MOVE.W    #2,WAIT_Y_SAVE
  1796.     MOVE.W    #2,INC_Y
  1797.     ADDQ.W    #1,NB_PIECE
  1798.     RTS
  1799. TO_9
  1800.     CMP.W    #9,D7    
  1801.     BNE.S    TO_8
  1802.     MOVE.W    #1,WAIT_Y
  1803.     MOVE.W    #1,WAIT_Y_SAVE
  1804.     MOVE.W    #2,INC_Y
  1805.     ADDQ.W    #1,NB_PIECE
  1806.     RTS
  1807. TO_8
  1808.     CMP.W    #8,D7
  1809.     BNE.S    TO_6
  1810.     MOVE.W    #2,WAIT_Y
  1811.     MOVE.W    #2,WAIT_Y_SAVE
  1812.     SUBQ.W    #1,NB_PIECE
  1813.     MOVE.W    #2,INC_Y
  1814.     RTS
  1815. TO_6
  1816.     CMP.W    #6,D7
  1817.     BNE.S    TO_RIEN
  1818.     MOVE.W    #3,WAIT_Y
  1819.     MOVE.W    #3,WAIT_Y_SAVE
  1820.     ADDQ.W    #1,NB_PIECE
  1821.     MOVE.W    #2,INC_Y
  1822. TO_RIEN
  1823.     MOVE.W    #1,WAIT_Y
  1824.     MOVE.W    #1,WAIT_Y_SAVE
  1825.     MOVE.W    #2,INC_Y
  1826.     
  1827.     ENDC
  1828.     
  1829.     RTS
  1830.         
  1831.         
  1832.     
  1833. AFF_FOND
  1834.     BSR    WAIT_VBL
  1835.     
  1836.  
  1837.  
  1838.     LEA    FOND2,A0
  1839.     MOVE.L    ECRANRO,A1
  1840.     ADD.L    #$3F700,A1
  1841.     
  1842.     MOVEQ    #73,D0
  1843. LOOP_H_FOND
  1844.     MOVEQ    #(320/4)-1,D1
  1845. LOOP_W_FOND
  1846.     MOVE.L    (A0)+,(A1)+
  1847.     DBRA    D1,LOOP_W_FOND
  1848.     LEA    320(A1),A1
  1849.     DBRA    D0,LOOP_H_FOND
  1850.     
  1851.     MOVE.L    ECRANRO,A1
  1852.     MOVE.L    #FOND2,A2
  1853.     MOVE.L    A2,A3
  1854.     MOVE.L    A2,A6
  1855.     LEA    320-48(A6),A6
  1856.     MOVE.L    A6,D6
  1857.     ADD.L    #(640*480)-(74*640)-(50*640),A1
  1858.     MOVE.L    A1,A4
  1859.     MOVE.L    A1,A5
  1860.     LEA    320-48(A5),A5
  1861.     MOVE.L    A5,D5
  1862.     
  1863.     MOVEQ    #8,D1
  1864. LOOP_COPY_F
  1865.     MOVEQ    #50,D0
  1866. LOOP_COPY2
  1867.     REPT 12
  1868.     MOVE.L    (A2)+,(A1)+
  1869.     MOVE.L    (A6)+,(A5)+
  1870.     ENDR
  1871.     LEA    640-48(A1),A1
  1872.     LEA    320-48(A2),A2
  1873.     LEA    640-48(A5),A5
  1874.     LEA    320-48(A6),A6
  1875.     DBRA    D0,LOOP_COPY2    
  1876.     MOVE.L    A3,A2
  1877.     MOVE.L    A4,A1
  1878.     MOVE.L    D6,A6
  1879.     MOVE.L    D5,A5
  1880.     MOVE.L    D1,D7
  1881.     MULU    #50*640,D7
  1882.     SUB.L    D7,A1
  1883.     SUB.L    D7,A5
  1884.     DBRA    D1,LOOP_COPY_F
  1885.  
  1886.     LEA    TITLE,A0
  1887.     MOVE.L    ECRANRO,A1
  1888.     
  1889.     LEA    320(A1),A1
  1890.     MOVE.L    #109,D0
  1891. LOOP_H_FOND2
  1892.     MOVEQ    #(320/4)-1,D1
  1893. LOOP_W_FOND2
  1894.     MOVE.L    (A0)+,(A1)+
  1895.     DBRA    D1,LOOP_W_FOND2
  1896.     LEA    320(A1),A1
  1897.     DBRA    D0,LOOP_H_FOND2
  1898.     
  1899.     LEA    -16(A1),A1
  1900.     MOVE.L    #89,D0
  1901. LOOP_H_FOND22
  1902.     MOVEQ    #(320/4)-1,D1
  1903. LOOP_W_FOND22
  1904.     MOVE.L    (A0)+,(A1)+
  1905.     DBRA    D1,LOOP_W_FOND22
  1906.     LEA    320(A1),A1
  1907.     DBRA    D0,LOOP_H_FOND22
  1908.     RTS
  1909.     
  1910. AFF_SPRT
  1911.     MOVE.L    SPRITE,A0
  1912.     MOVE.L    ECRANRO_TAB,A1
  1913.     ADD.L    OFFSET,A1
  1914.     MOVEQ    #31,D0
  1915. LOOP_AFF
  1916.     REPT 8
  1917.     MOVE.L    (A0)+,(A1)+
  1918.     ENDR
  1919.     LEA    640-32(A1),A1
  1920.     DBRA    D0,LOOP_AFF
  1921.     RTS
  1922.  
  1923. AFF_SPRT_M
  1924.     MOVE.L    SPRITE,A0
  1925.     MOVE.L    ECRANRO_TAB,A1
  1926.     MOVE.L    MASK,A2
  1927.     ADD.L    OFFSET,A1
  1928.     MOVEQ    #25,D0
  1929. LOOP_AFF_M
  1930.     MOVE.W    (A2)+,D1
  1931.     REPT 8
  1932.     MOVE.W    (A0)+,D2
  1933.     AND.W    D1,(A1)
  1934.     OR.W    D2,(A1)+
  1935.     ENDR
  1936.     MOVE.W    (A2)+,D1
  1937.     REPT 8
  1938.     MOVE.W    (A0)+,D2
  1939.     AND.W    D1,(A1)
  1940.     OR.W    D2,(A1)+
  1941.     ENDR
  1942.     
  1943.     LEA    640-32(A1),A1
  1944.     DBRA    D0,LOOP_AFF_M
  1945.     RTS
  1946. SAVE_FOND_D
  1947.     MOVE.L    #SAVE,A0
  1948.     MOVE.L    ECRANRO_TAB,A1
  1949.     ADD.L    OFFSET,A1
  1950.     MOVEQ    #31,D0
  1951. LOOP_SAVE_D
  1952.     REPT 8
  1953.     MOVE.L    (A1)+,(A0)+
  1954.     ENDR
  1955.     LEA    640-32(A1),A1
  1956.     DBRA    D0,LOOP_SAVE_D
  1957.     RTS
  1958.  
  1959. SAVE_FOND_G
  1960.     MOVE.L    #SAVE+(32*32),A0
  1961.     MOVE.L    ECRANRO_TAB,A1
  1962.     ADD.L    OFFSET,A1
  1963.     MOVEQ    #31,D0
  1964. LOOP_SAVE_G
  1965.     REPT 8
  1966.     MOVE.L    (A1)+,(A0)+
  1967.     ENDR
  1968.     LEA    640-32(A1),A1
  1969.     DBRA    D0,LOOP_SAVE_G
  1970.     RTS
  1971.  
  1972. AFF_SPRT_NEXT
  1973.     MOVE.L    SPRITE,A0
  1974.     MOVE.L    ECRANRO_TAB,A1
  1975.     ADD.L    OFFSET,A1
  1976.     MOVEQ    #31,D0
  1977. LOOP_AFF_NEXT2
  1978.     REPT 8
  1979.     MOVE.L    (A0)+,D6
  1980.     MOVE.L    (A1),D7
  1981.     OR.L    D6,D7
  1982.     MOVE.L    D7,(A1)+
  1983.     ENDR
  1984.     LEA    640-32(A1),A1
  1985.     DBRA    D0,LOOP_AFF_NEXT2
  1986.     RTS
  1987.  
  1988. RANDOM
  1989.     * D7=NB DE RANDOM
  1990.     * RANDOM (D7) PAR EXEMPLE
  1991.     MOVEM.L    D0-D6/A0-A6,-(A7)
  1992.     MOVE.L    #255,D3
  1993.     MOVE.L    D7,D2
  1994.     *ADDQ.L    #1,D2
  1995.     DIVU.W    D2,D3
  1996.     MOVE.W    #$11,-(A7)
  1997.     TRAP    #14
  1998.     ADDQ.L    #2,A7
  1999.     AND.L    #$000000FF,D0
  2000.     DIVU    D3,D0
  2001.     ADDQ.W    #1,D0
  2002.     CMP.W    D7,D0
  2003.     BLE.S    CONT_RAND
  2004.     MOVE.W    #1,D0
  2005. CONT_RAND
  2006.     MOVE.W    D0,D7
  2007.     MOVEM.L    (A7)+,D0-D6/A0-A6
  2008.     RTS
  2009.     
  2010.  
  2011. INIT
  2012.     LEA    DECIMAL,A0
  2013.     LEA    DECIM_G_O,A1
  2014.     
  2015.     MOVE.L    #0,(A0)+
  2016.     MOVE.L    #0,(A0)+
  2017.     MOVE.L    #0,(A0)+
  2018.     MOVE.L    #0,(A0)+
  2019.     MOVE.L    #0,(A1)+
  2020.     MOVE.L    #0,(A1)+
  2021.     MOVE.L    #0,(A1)+
  2022.     MOVE.L    #0,(A1)+
  2023.  
  2024.     MOVE.W    #0,CUR_LEVEL
  2025.     MOVE.L    #0,SCORE
  2026.     MOVE.W    #0,NB_EXPL
  2027.     MOVE.W    #0,PTR_POINT
  2028.     MOVE.W    #3,WAIT_Y
  2029.     MOVE.W    #3,WAIT_Y_SAVE
  2030.     MOVE.W    #2,INC_Y
  2031.     MOVE.W    #18,LINE_EXP
  2032.     MOVE.W    #1,COL_EXP
  2033.     MOVE.W    #0,LEVEL
  2034.     MOVE.W    #0,CUR_DUBS
  2035.     
  2036.     IFEQ    DEMO
  2037.     
  2038.     CMP.W    #1,DIFICULT
  2039.     BNE.S    CONT_INIT_1
  2040.     MOVE.W    #4,NB_PIECE
  2041. CONT_INIT_1    CMP.W    #2,DIFICULT
  2042.     BNE.S    CONT_INIT_2
  2043.     MOVE.W    #5,NB_PIECE
  2044. CONT_INIT_2    CMP.W    #3,DIFICULT
  2045.     BNE.S    CONT_INIT_3
  2046.     MOVE.W    #6,NB_PIECE
  2047. CONT_INIT_3
  2048.     ELSE
  2049.     
  2050.     CMP.W    #1,DIFICULT
  2051.     BNE.S    CONT_INIT_1
  2052.     MOVE.W    #6,NB_PIECE
  2053. CONT_INIT_1    CMP.W    #2,DIFICULT
  2054.     BNE.S    CONT_INIT_2
  2055.     MOVE.W    #7,NB_PIECE
  2056. CONT_INIT_2    CMP.W    #3,DIFICULT
  2057.     BNE.S    CONT_INIT_3
  2058.     MOVE.W    #8,NB_PIECE
  2059. CONT_INIT_3
  2060.     ENDC
  2061.     
  2062.     LEA    TABLEAU,A0
  2063.     LEA    TAB_VIDE,A1
  2064.     MOVEQ    #(180/4)-1,D0
  2065. LOOP_INIT_TAB
  2066.     MOVE.L    (A1)+,(A0)+
  2067.     DBRA    D0,LOOP_INIT_TAB
  2068.     
  2069.     MOVE.W    NB_PIECE,D7
  2070.     BSR    RANDOM    * RANDOM(4)
  2071.     MOVE.B    D7,CUR_PIECE    
  2072.  
  2073.     MOVE.W    NB_PIECE,D7
  2074.     BSR    RANDOM    * RANDOM(4)
  2075.     MOVE.B    D7,CUR_PIECE+1
  2076. REDO_3
  2077.     MOVE.W    NB_PIECE,D7
  2078.     BSR    RANDOM    * RANDOM(4)
  2079.     MOVE.B    D7,CUR_PIECE+2
  2080.  
  2081.     MOVE.B    CUR_PIECE,D0
  2082.     MOVE.B    CUR_PIECE+1,D1
  2083.     CMP.B    D0,D1
  2084.     BNE    OK_INIT
  2085.     MOVE.B    CUR_PIECE+2,D0
  2086.     CMP.B    D0,D1
  2087.     BEQ    REDO_3
  2088. OK_INIT
  2089.     MOVE.W    NB_PIECE,D7
  2090.     BSR    RANDOM
  2091.     MOVE.B    D7,NEXT_PIECE
  2092.  
  2093.     MOVE.W    NB_PIECE,D7
  2094.     BSR    RANDOM
  2095.     MOVE.B    D7,NEXT_PIECE+1
  2096.  
  2097.     MOVE.W    NB_PIECE,D7
  2098.     BSR    RANDOM
  2099.     MOVE.B    D7,NEXT_PIECE+2
  2100.     
  2101.     MOVE.W    #4,CUR_COLONE
  2102.     MOVE.W    #3,CUR_LIGNE
  2103.     MOVE.L    #3*32+48,CUR_X
  2104.     MOVE.L    #0,CUR_Y
  2105.     
  2106.     **** TO DEBUG *****
  2107.     IFNE    DEBUG
  2108.     MOVE.B    #1,CUR_PIECE
  2109.     MOVE.B    #2,CUR_PIECE+1
  2110.     MOVE.B    #15,CUR_PIECE+2
  2111.     
  2112.     MOVE.B    #1,NEXT_PIECE
  2113.     MOVE.B    #11,NEXT_PIECE+1
  2114.     MOVE.B    #15,NEXT_PIECE+2
  2115.     ENDC
  2116.     
  2117.     LEA    TAB_DIF_LEV,A0
  2118.     MOVE.W    DIFICULT,D0
  2119.     SUBQ    #1,D0
  2120.     LEA    TAB_CHG_LEV,A1
  2121.     MOVE.L    (A0,D0*4),(A1)
  2122.     RTS
  2123.  
  2124. WAIT_VBL
  2125.     IFEQ DEBUG
  2126.     MOVE.W    #0,OK
  2127. W_VBL
  2128.     CMP.W    #1,OK
  2129.     BNE.S    W_VBL
  2130.     ENDC
  2131.     RTS    
  2132.  
  2133. GET_CHAR
  2134.     MOVEM.L    D0-D7/A0-A6,-(A7)
  2135.     MOVE.W    #$FF,-(A7)
  2136.     MOVE.W    #$6,-(A7)
  2137.     TRAP    #1
  2138.     ADDQ.L    #4,A7
  2139.     SWAP    D0
  2140.     MOVE.B    D0,KEY
  2141.     MOVE.B    D0,KEY_SAVE
  2142.     CMP.B    #0,J_FLAG
  2143.     BEQ    NOT_JOY
  2144.     MOVE.B    J_FLAG,KEY
  2145.     MOVE.B    J_FLAG,KEY_SAVE
  2146.     MOVE.B    #0,J_FLAG
  2147. NOT_JOY
  2148.     MOVEM.L    (A7)+,D0-D7/A0-A6
  2149.     RTS    
  2150. GET_CHAR2
  2151.     MOVEM.L    D0-D7/A0-A6,-(A7)
  2152.     MOVE.W    #$FF,-(A7)
  2153.     MOVE.W    #$6,-(A7)
  2154.     TRAP    #1
  2155.     ADDQ.L    #4,A7
  2156.     MOVE.B    D0,KEY
  2157.     MOVE.B    D0,KEY_SAVE
  2158.     MOVEM.L    (A7)+,D0-D7/A0-A6
  2159.     RTS    
  2160.  
  2161. COLONE_TO_X
  2162.     MOVEQ    #0,D0
  2163.     MOVE.W    CUR_COLONE,D0
  2164.     MULU.W    #32,D0
  2165.     ADD.W    #16,D0
  2166.     MOVE.L    D0,CUR_X
  2167.     RTS
  2168.  
  2169. AFF_PIECE
  2170.     MOVEQ    #0,D0
  2171.     MOVE.L    D0,D1
  2172.     MOVE.L    D0,D2
  2173.     MOVE.L    D0,D3
  2174.     LEA    TAB_SPR,A4
  2175.     LEA    CUR_PIECE,A0
  2176.     MOVE.B    (A0)+,D0
  2177.     MOVE.B    (A0)+,D1
  2178.     MOVE.B    (A0),D2
  2179.     MOVE.L    (A4,D0.W*4),SPRITE
  2180.     MOVE.L    CUR_Y,D3
  2181.     MULU    #640,D3
  2182.     ADD.L    CUR_X,D3
  2183.     MOVE.L    D3,OFFSET
  2184.     BSR    AFF_SPRT
  2185.     MOVE.L    (A4,D1.W*4),SPRITE
  2186.     ADD.L    #640*32,D3
  2187.     MOVE.L    D3,OFFSET
  2188.     BSR    AFF_SPRT
  2189.     MOVE.L    (A4,D2.W*4),SPRITE
  2190.     ADD.L    #640*32,D3
  2191.     MOVE.L    D3,OFFSET
  2192.     BSR    AFF_SPRT
  2193.     
  2194.     RTS
  2195.  
  2196. AFF_NEXT
  2197.     MOVEM.L    D0-D7/A0-A6,-(A7)
  2198.     LEA    NEXT,A0
  2199.     MOVE.L    ECRANRO,A1
  2200.     LEA    16*640(A1),A1
  2201.     MOVEQ    #97,D0
  2202. LOOP_CADRE
  2203.     REPT 8
  2204.     MOVE.L    (A0)+,(A1)+
  2205.     ENDR
  2206.     LEA    640-32(A1),A1
  2207.     DBRA    D0,LOOP_CADRE
  2208.     MOVEQ    #0,D0
  2209.     MOVE.L    D0,D1
  2210.     MOVE.L    D0,D2
  2211.     MOVE.L    D0,D3
  2212.     LEA    TAB_SPR,A4
  2213.     LEA    NEXT_PIECE,A0
  2214.     MOVE.B    (A0)+,D0
  2215.     MOVE.B    (A0)+,D1
  2216.     MOVE.B    (A0),D2
  2217.     MOVE.L    (A4,D0.W*4),A2
  2218.     MOVE.L    NEXT_X_Y,D3
  2219.     MOVE.L    D3,OFFSET
  2220.     MOVE.L    A2,SPRITE
  2221.     BSR    AFF_SPRT_NEXT
  2222.     MOVE.L    (A4,D1.W*4),A2
  2223.     ADD.L    #640*32,D3
  2224.     MOVE.L    D3,OFFSET
  2225.     MOVE.L    A2,SPRITE
  2226.     BSR    AFF_SPRT_NEXT
  2227.     MOVE.L    (A4,D2.W*4),A2
  2228.     ADD.L    #640*32,D3
  2229.     MOVE.L    D3,OFFSET
  2230.     MOVE.L    A2,SPRITE
  2231.     BSR    AFF_SPRT_NEXT
  2232.     
  2233.     MOVEM.L    (A7)+,D0-D7/A0-A6
  2234.     RTS
  2235.  
  2236. EFF_PIECE
  2237.     MOVE.L    ECRANRO_TAB,A6
  2238.     MOVE.L    CUR_Y,D4
  2239.     
  2240.     CMP.L    #96,D4
  2241.     BLT    EFF_CLIP
  2242.     CMP.B    #$4D,KEY_SAVE
  2243.     BEQ.S    EFF_TOTAL
  2244.     CMP.B    #$4B,KEY_SAVE
  2245.     BEQ.S    EFF_TOTAL
  2246.     CMP.B    #$50,KEY_SAVE
  2247.     BEQ.S    DO_EFF_FALL
  2248. ICI_EFF
  2249.     SUBQ.L    #2,D4
  2250.     MULU.W    #640,D4
  2251.     ADD.L    CUR_X,D4
  2252.     ADD.L    D4,A6
  2253.     MOVEQ    #2,D0
  2254. DO_EFF
  2255.     MOVEQ    #0,D6
  2256. LOOP_EFF_P
  2257.     REPT 8
  2258.     MOVE.L    D6,(A6)+
  2259.     ENDR
  2260.     LEA    640-32(A6),A6
  2261.     DBRA    D0,LOOP_EFF_P
  2262.     MOVE.W    #0,GD_FLAG
  2263.     RTS
  2264.     
  2265. EFF_TOTAL
  2266.     SUBQ.L    #2,D4
  2267.     MULU.L    #640,D4
  2268.     ADD.L    CUR_X,D4
  2269.     ADD.L    D4,A6
  2270.     CMP.W    #1,GD_FLAG
  2271.     BNE.S    OK_TOTAL
  2272.     CMP.W    #1,INC_Y
  2273.     BGE    PLUS_EFF
  2274.     MOVEQ    #96+1,D0
  2275.     BRA.S    DO_EFF
  2276. PLUS_EFF
  2277.     MOVEQ    #96+1,D0
  2278.     BRA.S    DO_EFF
  2279.     
  2280. OK_TOTAL
  2281.     MOVEQ    #96+1,D0
  2282.     BRA.S    DO_EFF
  2283.  
  2284. DO_EFF_FALL
  2285.     MULU.W    #640,D4
  2286.     ADD.L    CUR_X,D4
  2287.     ADD.L    D4,A6
  2288.     MOVEQ    #31,D0
  2289.     BRA    DO_EFF
  2290.     
  2291. EFF_CLIP
  2292.     CMP.B    #$4D,KEY_SAVE
  2293.     BEQ.S    EFF_PART
  2294.     CMP.B    #$4B,KEY_SAVE
  2295.     BEQ.S    EFF_PART
  2296.     CMP.B    #$50,KEY_SAVE
  2297.     BEQ.S    DO_EFF_FALL
  2298.     RTS
  2299. EFF_PART
  2300.     MOVE.L    ECRANRO,A6
  2301.     MOVE.L    CUR_Y,D0
  2302.     ADD.L    CUR_X,A6    
  2303.     BRA    DO_EFF
  2304.  
  2305. NEXT_TO_CUR
  2306.     MOVE.W    #0,NO_ROTAT
  2307.     
  2308.     ******* TO DEBUG ********
  2309.     *MOVE.B    #1,CUR_PIECE
  2310.     *MOVE.B    #1,CUR_PIECE+1
  2311.     *MOVE.B    #15,CUR_PIECE+2
  2312.     *MOVE.B    #16,CUR_PIECE+2
  2313.     
  2314.     *MOVE.B    #1,NEXT_PIECE
  2315.     *MOVE.B    #1,NEXT_PIECE+1
  2316.     *MOVE.B    #16,NEXT_PIECE+2
  2317.     *MOVE.B    #17,NEXT_PIECE+2
  2318.     *RTS
  2319.     
  2320.     MOVE.L    NEXT_PIECE,D0
  2321.     MOVE.L    D0,CUR_PIECE
  2322.     MOVE.B    CUR_PIECE+2,D0
  2323.     CMP.B    #10,D0    * ETOILE EMPECHE ROTATION
  2324.     BNE.S    CONT_NEXT
  2325.     MOVE.W    #1,NO_ROTAT
  2326. CONT_NEXT
  2327.     
  2328.     LEA    TAB_VAL_RAND,A4
  2329.     MOVE.W    #10,D7
  2330.     BSR    RANDOM
  2331.     CMP2.B    (A4),D7
  2332.     BCS.S     DO_8_10
  2333.     
  2334.     MOVE.W    NB_PIECE,D7
  2335.     BSR    RANDOM
  2336.     MOVE.B    D7,NEXT_PIECE
  2337.  
  2338.     MOVE.W    NB_PIECE,D7
  2339.     BSR    RANDOM
  2340.     MOVE.B    D7,NEXT_PIECE+1
  2341.  
  2342.     MOVE.W    NB_PIECE,D7
  2343.     BSR    RANDOM
  2344.     MOVE.B    D7,NEXT_PIECE+2
  2345.     
  2346.     RTS
  2347. DO_8_10
  2348.     ADDQ.L    #2,A4
  2349.     CMP2.B    (A4),D7
  2350.     BCS    BUG
  2351.     MOVE.W    #13,D7
  2352.     BSR    RANDOM
  2353.     CMP.B    #1,D7
  2354.     BEQ.S    DO_1_2
  2355.     CMP.B    #2,D7
  2356.     BNE.S    NOT_1_2
  2357. DO_1_2
  2358.     MOVE.W    NB_PIECE,D7
  2359.     BSR    RANDOM
  2360.     MOVE.B    D7,NEXT_PIECE
  2361.     MOVE.B    D7,NEXT_PIECE+1
  2362.     MOVE.B    D7,NEXT_PIECE+2
  2363.     RTS
  2364. NOT_1_2
  2365.     CMP.B    #3,D7
  2366.     BEQ.S    DO_3_10
  2367.     CMP.B    #10,D7
  2368.     BNE.S    NOT_3_10
  2369. DO_3_10
  2370.     
  2371.     MOVE.W    NB_PIECE,D7
  2372.     BSR    RANDOM
  2373.     MOVE.B    D7,NEXT_PIECE
  2374.  
  2375.     MOVE.W    NB_PIECE,D7
  2376.     BSR    RANDOM
  2377.     MOVE.B    D7,NEXT_PIECE+1
  2378.  
  2379.     MOVE.W    CUR_DUBS,D0
  2380.     ADD.W    #13,D0
  2381.     MOVE.B    D0,NEXT_PIECE+2
  2382.     ADDQ.W    #1,CUR_DUBS
  2383.     CMP.W    #4,CUR_DUBS
  2384.     BNE.S    NOT_ALL_DUBS
  2385.     MOVE.W    #0,CUR_DUBS
  2386. NOT_ALL_DUBS
  2387.     RTS
  2388. NOT_3_10
  2389.     CMP.B    #4,D7
  2390.     BNE.S    NOT_4
  2391.     MOVE.W    NB_PIECE,D7
  2392.     BSR    RANDOM
  2393.     MOVE.B    D7,NEXT_PIECE
  2394.  
  2395.     MOVE.W    NB_PIECE,D7
  2396.     BSR    RANDOM
  2397.     MOVE.B    D7,NEXT_PIECE+1
  2398.  
  2399.     MOVE.B    #12,NEXT_PIECE+2
  2400.     RTS
  2401. NOT_4
  2402.     CMP.B    #5,D7
  2403.     BEQ.S    DO_5_8_12
  2404.     CMP.B    #8,D7
  2405.     BEQ.S    DO_5_8_12
  2406.     CMP.B    #12,D7
  2407.     BNE.S    NOT_5_8_12
  2408. DO_5_8_12
  2409.     MOVE.W    NB_PIECE,D7
  2410.     BSR    RANDOM
  2411.     MOVE.B    D7,NEXT_PIECE
  2412.  
  2413.     MOVE.W    NB_PIECE,D7
  2414.     BSR    RANDOM
  2415.     MOVE.B    D7,NEXT_PIECE+1
  2416.     MOVE.B    #9,NEXT_PIECE+2
  2417.     RTS
  2418. NOT_5_8_12
  2419.     CMP.B    #6,D7
  2420.     BNE.S    NOT_6
  2421.     MOVE.W    NB_PIECE,D7
  2422.     BSR    RANDOM
  2423.     MOVE.B    D7,NEXT_PIECE
  2424.  
  2425.     MOVE.W    NB_PIECE,D7
  2426.     BSR    RANDOM
  2427.     MOVE.B    D7,NEXT_PIECE+1
  2428.     MOVE.B    #11,NEXT_PIECE+2
  2429.     RTS
  2430. NOT_6
  2431.     CMP.B    #11,D7
  2432.     BNE.S    NOT_11
  2433.     MOVE.W    NB_PIECE,D7
  2434.     BSR    RANDOM
  2435.     MOVE.B    D7,NEXT_PIECE
  2436.  
  2437.     MOVE.W    NB_PIECE,D7
  2438.     BSR    RANDOM
  2439.     MOVE.B    D7,NEXT_PIECE+1
  2440.     MOVE.B    #17,NEXT_PIECE+2    
  2441.     RTS
  2442. NOT_11
  2443.     CMP.B    #7,D7
  2444.     BEQ.S    DO_7_9_13
  2445.     CMP.B    #9,D7
  2446.     BEQ.S    DO_7_9_13
  2447.     CMP.B    #13,D7
  2448.     BNE.S    NOTHING
  2449. DO_7_9_13
  2450.     MOVE.W    NB_PIECE,D7
  2451.     BSR    RANDOM
  2452.     MOVE.B    D7,NEXT_PIECE
  2453.  
  2454.     MOVE.W    NB_PIECE,D7
  2455.     BSR    RANDOM
  2456.     MOVE.B    D7,NEXT_PIECE+1
  2457.     MOVE.B    #10,NEXT_PIECE+2
  2458. NOTHING
  2459.     RTS
  2460.         
  2461. BUG
  2462.     JSR    WAIT_VBL
  2463.     CMP.B    #$01,KEY
  2464.     BNE.S    BUG
  2465.     BRA    FIN
  2466.     
  2467. TEST_HAUT
  2468.     LEA    TABLEAU,A0
  2469.     MOVEQ    #0,D0
  2470.     MOVEQ    #1,D1
  2471. HAUT_LOOP
  2472.     MOVE.W    D0,D2
  2473.     MOVE.W    D1,D3
  2474.     MULU.W    #9,D2
  2475.     ADD.W    D3,D2
  2476.     CMP.B    #0,(A0,D2.W)
  2477.     BNE.S    OK_TOP_OF_LINE
  2478.     ADDQ.W    #1,D1
  2479.     CMP.W    #8,D1
  2480.     BNE    HAUT_LOOP
  2481.     ADDQ.W    #1,D0
  2482.     MOVEQ    #1,D1
  2483.     CMP.W    #19,D0
  2484.     BEQ.S    OK_TOP_OF_LINE
  2485.     BRA    HAUT_LOOP
  2486. OK_TOP_OF_LINE
  2487.     MOVE.W    D0,TOP_OF_LINE
  2488.     RTS
  2489.     
  2490.     *********************************************
  2491.     *** BA MAINTENANT FAUT COMPTER LES POINTS ***
  2492.     *********************************************
  2493.     
  2494. COMPTE_POINT
  2495.     MOVEQ    #0,D0
  2496.     MOVE.L    D0,D1
  2497.     MOVE.L    D1,D2
  2498.     MOVE.L    D1,D3
  2499.     MOVE.L    D1,D4
  2500.     MOVE.L    D1,D5
  2501.     MOVE.L    D1,D6
  2502.     MOVE.L    D1,D7
  2503.     
  2504.     LEA    PIECE,A0
  2505.     MOVE.L    #(10*20)-1,D0
  2506. COMPTE_PIECE
  2507.     
  2508.     MOVE.B    (A0)+,D7    * C'EST LA PIECE DU CON !!!
  2509.     CMP.B    #0,D7    * BEIN Y'EN A PLUS
  2510.     BEQ    REDONDANT
  2511.     ADDQ.W    #1,D6    * NB DE PIECE NANANANANERE
  2512.     DBRA    D0,COMPTE_PIECE
  2513.     
  2514.     MULU.L    D6,D6    *   (NB_PIECE^2)
  2515.     MULU.L    #10,D6    *  ((    "     )*10)
  2516.     MOVEQ    #0,D5
  2517.     MOVE.W    DIFICULT,D5
  2518.     MULU.L    D5,D6    * (((NB_PIECE^2)*10)*DIFICULTE)
  2519.     
  2520.     
  2521. REDONDANT
  2522.     MOVEQ    #0,D3
  2523.     MOVE.W    REDONDANCE,D3
  2524.     MULU.L    D3,D6    * (((NB_PIECE^2)*10)*DIFICULTE)*REDONDANCE
  2525.     ADD.L    D5,D6
  2526.     ADDQ.L    #1,D6
  2527.     
  2528.     IFNE    DEBUG
  2529.     ADD.L    #10,D6
  2530.     ENDC
  2531.     
  2532.     ADD.L    D6,SCORE
  2533.     MOVEQ    #0,D6
  2534.     MOVE.W    NB_MUR,D6
  2535.     MULU.L    #3219,D6
  2536.     ADD.L    D6,SCORE
  2537.     CMP.W    #19,TOP_OF_LINE
  2538.     BNE    NOT_EMPTY
  2539.     ADD.L    #30123,SCORE
  2540. NOT_EMPTY
  2541.     MOVE.W    #0,REDONDANCE
  2542.     MOVE.W    #0,NB_MUR
  2543. PROUT
  2544.     * ON VA TRANSFORMER LE SCORE EN DECIMAL*
  2545.     LEA    DECIMAL,A0
  2546.     MOVE.L    SCORE,D0
  2547.     CMP.L    #10,D0
  2548.     BGE.S    SUP_10
  2549.     ADD.B    #'0',D0
  2550.     MOVE.B    D0,(A0)+
  2551.     BRA.S    FIN_DIGIT
  2552. SUP_10
  2553.     MOVE.L    #1000000,D2
  2554.     MOVEQ    #6,D7    * SUR 7 CHIFFRES
  2555. LOOP
  2556.     MOVEQ    #0,D1
  2557.     DIVU.L    D2,D1:D0
  2558.     ADD.B    #'0',D0
  2559.     MOVE.B    D0,(A0)+
  2560.     MOVE.L    D1,D0
  2561.     DIVU.L    #10,D2
  2562.     DBRA    D7,LOOP
  2563. FIN_DIGIT
  2564.     BSR    AFF_SCORE    * HÉ OUAIS, ENFIN CE PUTAIN 
  2565.             * DE SCORE QUE TOUT LE
  2566.             * MODE ME RÉCLAME DEPUIS
  2567.             * LE DEBUT, BEIN LE VOILA !
  2568.     
  2569.     
  2570.     LEA    PIECE,A0
  2571.     MOVEQ    #(10*20/4)-1,D0
  2572. CLR_PIECE
  2573.     MOVE.L    #0,(A0)+
  2574.     DBRA    D0,CLR_PIECE
  2575.     
  2576.     IFEQ    DEMO
  2577.     
  2578.     MOVE.W    PTR_POINT,D7
  2579.     LEA    TAB_CHG_LEV,A5
  2580.     MOVE.L    (A5),A5
  2581.     MOVE.W    (A5,D7.W*2),D1
  2582.     MOVE.W    NB_EXPL,D2
  2583.     CMP.L    D2,D1
  2584.     BGT.S    NO_CHANGE_LEVEL
  2585.     BSR    NEXT_LEVEL
  2586.     ADDQ.W    #1,PTR_POINT
  2587.     
  2588.     ENDC
  2589. NO_CHANGE_LEVEL
  2590.     MOVE.W    #0,NB_MUR
  2591.     RTS 
  2592.  
  2593. GET_ALL_PIECES
  2594.     * THE_PIECE = PIECE A SCANNER
  2595.     * SCANNED = DEBUT DU TABLEAU OU RETROUVER LES PIECES
  2596.     SAVE    D0-D7/A0-A6
  2597.     
  2598.     MOVE.B    THE_PIECE,D7    * C'EST CELLE LA QU'ON VEUT
  2599.     LEA    TABLEAU,A5
  2600.     LEA    SCANNED,A6
  2601.     MOVEQ    #18,D0    * 18 EME LIGNE
  2602.     MOVEQ    #1,D1    * 1 ERRE COLONE    
  2603. LOOP_GET
  2604.     MOVE.W    D0,D2
  2605.     MULU.W    #9,D2
  2606.     ADD.W    D1,D2
  2607.     MOVE.B    (A5,D2.W),D6
  2608.     CMP.B    D7,D6
  2609.     BNE    CONT_GET
  2610.     MOVE.W    D0,(A6)+
  2611.     MOVE.W    D1,(A6)+
  2612.     ADDQ.W    #1,NB_SCANNED
  2613. CONT_GET
  2614.     ADDQ.W    #1,D1    *COLONE    SUIVANTE
  2615.     CMP.W    #8,D1
  2616.     BNE.S    OK_GET_COL
  2617.     MOVE.W    #1,D1
  2618.     SUBQ.W    #1,D0
  2619. OK_GET_COL
  2620.     CMP.W    #1,D0
  2621.     BEQ    FIN_GET_PIECE
  2622.     BRA    LOOP_GET
  2623. FIN_GET_PIECE
  2624.     MOVE.L    #0,(A6)+
  2625.     LOAD    D0-D7/A0-A6
  2626.     RTS
  2627. AFF_SCORE
  2628.     MOVEM.L    D0-D7/A0-A6,-(A7)
  2629.     MOVEQ    #0,D0
  2630.     MOVE.L    D0,D1
  2631.     MOVE.L    D0,D2
  2632.     MOVE.L    D0,D3
  2633.     MOVE.L    D0,D4
  2634.     MOVE.L    D0,D5
  2635.     MOVE.L    D0,D6
  2636.     MOVE.L    D0,D7
  2637.     MOVE.L    #(640*208)+(640-32),D3
  2638.     LEA    DECIMAL,A2
  2639.     LEA    TAB_DIGIT,A3
  2640. PURGE_0
  2641.     MOVE.B    (A2)+,D1
  2642.     CMP.B    #0,D1
  2643.     BEQ    PLUS_DIGIT
  2644.     CMP.B    #'0',D1
  2645.     BEQ    PURGE_0
  2646.     SUBQ.L    #1,A2
  2647.     MOVE.L    A2,A6
  2648. GET_LAST
  2649.     CMP.B    #0,(A2)+
  2650.     BNE    GET_LAST
  2651.     SUBQ.L    #2,A2
  2652.     MOVE.B    (A2),D1
  2653. LOOP_AFF_SCORE
  2654.     SUB    #'0',D1
  2655.     MOVE.L    (A3,D1.W*4),SPRITE    *ON A LE SPRITE
  2656.     MOVE.L    D3,OFFSET
  2657.     BSR    AFF_SPRT
  2658.     CMP.L    A2,A6
  2659.     BEQ    PLUS_DIGIT
  2660.     SUBQ.L    #1,A2
  2661.     MOVE.B    (A2),D1
  2662.     SUB.L    #32,D3
  2663.     BRA    LOOP_AFF_SCORE
  2664. PLUS_DIGIT
  2665.     LEA    DECIM_G_O,A1
  2666.     LEA    DECIMAL,A0
  2667.     MOVE.L    (A0),(A1)+
  2668.     MOVE.L    #0,(A0)+
  2669.     MOVE.L    (A0),(A1)+
  2670.     MOVE.L    #0,(A0)+
  2671.     MOVE.L    (A0),(A1)+
  2672.     MOVE.L    #0,(A0)+
  2673.     MOVE.L    (A0),(A1)+
  2674.     MOVE.L    #0,(A0)+
  2675.     MOVEM.L    (A7)+,D0-D7/A0-A6
  2676.     RTS
  2677.     
  2678. CLS
  2679.     MOVE.L    ECRANRO,A1
  2680.     MOVE.L    #(640*480/4),D0
  2681. CLS_LOOP
  2682.     MOVE.L    #0,(A1)+
  2683.     SUBQ.L    #1,D0
  2684.     BEQ    FIN_CLS
  2685.     BRA    CLS_LOOP
  2686. FIN_CLS
  2687.     RTS
  2688. STOP_GAME
  2689.     BSR    WAIT_VBL
  2690. GAME_OVER
  2691.     CMP.W    #1,SOUND
  2692.     BNE    NO_G_O_SPL
  2693.     MOVE.W    #2,THE_SPL    *FIOUIPZ.RAW
  2694.     BSR    PLAY_SPE
  2695. WAIT_G_O_SPL
  2696.     MOVE.W    $FFFF8900.W,D0
  2697.     CMP.W    #0,D0
  2698.     BNE    WAIT_G_O_SPL
  2699. NO_G_O_SPL
  2700.  
  2701.     IFNE    MUSIC
  2702.     BSR    MUSIC_OFF
  2703.     ENDC
  2704.     
  2705.     MOVE.W    DIFICULT,D0
  2706.     SUBQ    #1,D0
  2707.     LEA    TAB_HS_TAB,A0
  2708.     MOVE.L    (A0,D0.W*4),A0    *TABLEAU HIGHSCORE CUR DIF
  2709.     MOVE.L    SCORE,D0
  2710.     LEA    (16*10)-4(A0),A0
  2711.     MOVE.L    (A0),D1
  2712.     CMP.L    D1,D0
  2713.     BLE    NOT_IN_HS
  2714.     
  2715.     IFEQ    DEBUG
  2716.     MOVEQ    #1,D0
  2717.     BSR    FADE_OUT256
  2718.     ENDC
  2719.     MOVE.L    #G_OVER,A0
  2720.     MOVE.L    ECRANRO,A1
  2721.     BSR    DEPACK
  2722.     MOVEQ    #0,D1
  2723.     MOVEQ    #0,D2
  2724.     MOVE.L    #(640*288)+(640-224),D3
  2725.     LEA    DECIM_G_O,A2
  2726.     LEA    TAB_FONTE,A3
  2727. PURGE_0_G_O
  2728.     MOVE.B    (A2)+,D1
  2729.     CMP.B    #0,D1
  2730.     BEQ    PLUS_DIGIT_G_O
  2731.     CMP.B    #'0',D1
  2732.     BEQ    PURGE_0_G_O
  2733.     SUBQ.L    #1,A2
  2734.     MOVE.L    A2,A6
  2735. GET_LAST_G_O
  2736.     CMP.B    #0,(A2)+
  2737.     BNE    GET_LAST_G_O
  2738.     SUBQ.L    #2,A2
  2739.     MOVE.B    (A2),D1
  2740. LOOP_AFF_SCORE_G_O
  2741.     SUB    #'0',D1
  2742.     MOVE.L    (A3,D1.W*4),A4
  2743.     MOVE.L    ECRANRO,A5
  2744.     ADD.L    D3,A5
  2745.     MOVEQ    #31,D7
  2746. G_O_SCORE
  2747.     REPT    8
  2748.     MOVE.L    (A4)+,(A5)+
  2749.     ENDR
  2750.     LEA    640-32(A4),A4
  2751.     LEA    640-32(A5),A5
  2752.     DBRA    D7,G_O_SCORE
  2753.  
  2754.     CMP.L    A2,A6
  2755.     BEQ    PLUS_DIGIT_G_O
  2756.     SUBQ.L    #1,A2
  2757.     MOVE.B    (A2),D1
  2758.     SUB.L    #32,D3
  2759.     BRA    LOOP_AFF_SCORE_G_O
  2760. PLUS_DIGIT_G_O
  2761.     IFEQ    DEBUG
  2762.     MOVE.L    #PAL,A0
  2763.     MOVEQ    #1,D0
  2764.     BSR    FADE_IN256
  2765.     ENDC
  2766.     MOVE.W    #0,KEY
  2767.     MOVE.W    #0,PTR_CUR
  2768.     
  2769.     **************************************
  2770.     **** ICI ON PRENDS LE NOM DES CONS ***
  2771.     **************************************
  2772.     
  2773.     LEA    CUR_NAME,A2    * ON, VIDE LA MERDE
  2774.     MOVE.L    #0,(A2)+
  2775.     MOVE.L    #0,(A2)+
  2776.     MOVE.L    #0,(A2)+
  2777.     LEA    CUR_NAME,A2
  2778.         
  2779. LOOP_G_O
  2780.     MOVE.L    ECRANRO,A5    * MY SCR
  2781.     ADD.L    #156*640+160,A5
  2782.     MOVE.W    PTR_CUR,D0
  2783.     LSL.L    #5,D0
  2784.     ADD.L    D0,A5
  2785.     BSR    GET_CHAR2
  2786.     CMP.B    #$D,KEY    * CR
  2787.     BEQ    FIN_LOOP_G_O
  2788.     CMP.B    #0,KEY
  2789.     BEQ    LOOP_G_O
  2790.     CMP.B    #$20,KEY    * SPC
  2791.     BNE    CONT_FONTE
  2792.     MOVE.B    #' ',(A2)
  2793.     ADDQ.W    #1,PTR_CUR
  2794.     CMP.W    #9,PTR_CUR
  2795.     BLE    CONT_LOOP_G_O
  2796.     MOVE.W    #9,PTR_CUR
  2797. CONT_LOOP_G_O
  2798.     MOVE.L    #NULL,A1
  2799.     MOVEQ    #31,D0
  2800. LOOP_SPC
  2801.     REPT 8
  2802.     MOVE.L    (A1)+,(A5)+
  2803.     ENDR
  2804.     LEA    640-32(A5),A5
  2805.     DBRA    D0,LOOP_SPC
  2806.     CMP.W    #9,PTR_CUR
  2807.     BEQ    BOUT_SPC
  2808.     ADDQ.L    #1,A2
  2809. BOUT_SPC
  2810.  
  2811.     BRA    LOOP_G_O
  2812.  
  2813.     
  2814. CONT_FONTE    CMP.B    #$8,KEY    * BACKSPACE
  2815.     BNE    NOT_BACK
  2816.     CMP.W    #9,PTR_CUR
  2817.     BGE    BOUT_BACK
  2818.     CMP.W    #0,PTR_CUR
  2819.     BEQ    BOUT_BACK
  2820.     SUBQ.L    #1,A2
  2821. BOUT_BACK
  2822.     MOVE.B    #0,(A2)
  2823.     CMP.W    #1,B_FLAG
  2824.     BEQ    CONT_LOOP_BACK
  2825.     CMP.W    #9,PTR_CUR
  2826.     BEQ    CONT_LOOP_BACK
  2827.     SUBQ.W    #1,PTR_CUR
  2828.     CMP.W    #-1,PTR_CUR
  2829.     BEQ    PLUS_BACK
  2830.     SUB.L    #32,A5
  2831.     
  2832. CONT_LOOP_BACK
  2833.     MOVE.W    #0,B_FLAG
  2834.     MOVE.L    #NULL,A1
  2835.     MOVEQ    #31,D0
  2836. LOOP_BACK
  2837.     REPT 8
  2838.     MOVE.L    (A1)+,(A5)+
  2839.     ENDR
  2840.     LEA    640-32(A5),A5
  2841.     DBRA    D0,LOOP_BACK
  2842.     CMP.W    #9,PTR_CUR
  2843.     BNE    CONT_G_O
  2844.     MOVE.W    #8,PTR_CUR
  2845.     MOVE.W    #1,B_FLAG
  2846. CONT_G_O
  2847.     BRA    LOOP_G_O
  2848.  
  2849. PLUS_BACK
  2850.     MOVE.W    #0,PTR_CUR
  2851.     BRA    LOOP_G_O
  2852. NOT_BACK    
  2853.     CMP.B    #$30,KEY
  2854.     BLT    LOOP_G_O
  2855.     CMP.B    #$5A,KEY
  2856.     BLE    OK_FONTE
  2857.     SUB.B    #$20,KEY
  2858. OK_FONTE
  2859.     MOVEQ    #0,D0
  2860.     LEA    TAB_FONTE,A0
  2861.     MOVE.B    KEY,D0
  2862.     MOVE.B    D0,(A2)
  2863.     
  2864.     CMP.W    #9,PTR_CUR
  2865.     BGE    THE_BOUT
  2866.     CMP.W    #1,B_FLAG
  2867.     BEQ    THE_BOUT_2
  2868.     ADDQ.L    #1,A2
  2869.     BRA    THE_BOUT
  2870. THE_BOUT_2
  2871.     ADD.L    #32,A5
  2872.     
  2873. THE_BOUT
  2874.  
  2875.     SUB.W    #$30,D0
  2876.     MOVE.L    (A0,D0.W*4),A1    *THE SPRITE
  2877.     MOVEQ    #31,D7
  2878. LOOP_AFF_FONTE
  2879.     REPT    8
  2880.     MOVE.L    (A1)+,(A5)+
  2881.     ENDR
  2882.     LEA    640-32(A1),A1
  2883.     LEA    640-32(A5),A5
  2884.     DBRA    D7,LOOP_AFF_FONTE
  2885.     ADDQ.W    #1,PTR_CUR
  2886.     CMP.W    #9,PTR_CUR
  2887.     BLE    GO_LOOP_G_O
  2888.     MOVE.W    #9,PTR_CUR
  2889. GO_LOOP_G_O
  2890.     MOVE.W    #0,B_FLAG
  2891.     BRA    LOOP_G_O
  2892. FIN_LOOP_G_O    
  2893.     ***************************************
  2894.     **** ICI ON VA REMPLIR LE HIGHSCORE ***
  2895.     ***************************************
  2896.     MOVE.W    DIFICULT,D0
  2897.     SUBQ    #1,D0
  2898.     LEA    TAB_HS_TAB,A0
  2899.     MOVE.L    (A0,D0.W*4),A0    *TABLEAU HIGHSCORE CUR DIF
  2900.     MOVE.L    A0,A1
  2901.     MOVEQ    #0,D6
  2902.     MOVE.L    SCORE,D7
  2903. LOOP_HS
  2904.     MOVE.L    12(A0),D5    * LE SCORE DANS LE TABLEAU
  2905.     CMP.L    D7,D5
  2906.     BLT    PUT_ICI
  2907.     LEA    16(A0),A0
  2908.     ADDQ.W    #1,D6
  2909.     CMP.W    #10,D6    
  2910.     BEQ    NOT_IN_HS
  2911.     BRA    LOOP_HS
  2912. PUT_ICI
  2913.     MOVE.L    D6,D5
  2914.     ADDQ    #1,D6
  2915.     MOVE.W    #10,D7
  2916.     CMP.W    D6,D7
  2917.     BEQ    THE_LAST
  2918.     MOVE.L    A1,A0    *TAB HS
  2919.     ADD.L    #16*8,A0    * FIN -1 
  2920.     MOVE.L    A0,A2
  2921.     ADD.L    #16,A2
  2922. LOOP_INSERT
  2923.     MOVE.L     (A0),(A2)
  2924.     MOVE.L     4(A0),4(A2)
  2925.     MOVE.L     8(A0),8(A2)
  2926.     MOVE.L     12(A0),12(A2)
  2927.     SUBQ    #1,D7
  2928.     SUB.L    #16,A0
  2929.     SUB.L    #16,A2
  2930.     CMP.W    D7,D6
  2931.     BNE    LOOP_INSERT
  2932. THE_LAST
  2933.     MULU.W    #16,D5
  2934.     ADD.L    D5,A1    *LA PLACE DANS LE TAB
  2935.     LEA    CUR_NAME,A2
  2936. PUT_NAME
  2937.     MOVE.L    (A2)+,(A1)+
  2938.     MOVE.L    (A2)+,(A1)+
  2939.     MOVE.L    (A2)+,(A1)+
  2940.     MOVE.L    SCORE,(A1)+
  2941.     
  2942.     IFEQ    DEMO
  2943.     BSR    CRYPT
  2944.     FILE_OPEN    READ,F_NAME_HS
  2945.     MOVE.W    D0,F_HANDLE
  2946.     FILE_WRITE    #TAB_H_SCORE_1,#16*30,F_HANDLE
  2947.     FILE_CLOSE    F_HANDLE
  2948.     BSR    CRYPT
  2949.     ENDC
  2950.     
  2951.     
  2952. NOT_IN_HS
  2953.     MOVE.W    #0,FADE_FLAG
  2954.     
  2955.     
  2956.     BSR.S    AFF_H_SCORE
  2957.     
  2958.     BRA    DO_MENU
  2959.     
  2960. AFF_H_SCORE
  2961.     MOVE.W    #0,NUM_NOM
  2962.     CMP.W    #1,FADE_FLAG
  2963.     BEQ.S    NO_FADE
  2964.     IFEQ    DEBUG
  2965.     MOVEQ    #1,D0
  2966.     BSR    FADE_OUT256
  2967.     ENDC
  2968.     
  2969. NO_FADE
  2970.     BSR    CLS
  2971.     MOVE.L    ECRANRO,A4    * MY SCR
  2972.     ADD.L    #16*640+192,A4
  2973.     LEA    TXT_HS,A1
  2974.     LEA    FIN_TXT_HS,A2
  2975.     MOVE.W    DIFICULT,D0
  2976.     ADD.L    #$30,D0
  2977.     MOVE.B    D0,-1(A2)
  2978. LOOP_TXT
  2979.     CMP.L    A1,A2
  2980.     BEQ    PLUS_TXT
  2981.     MOVEQ    #0,D0
  2982.     LEA    TAB_FONTE,A0
  2983.     MOVE.B    (A1)+,D0
  2984.     CMP.B    #$20,D0
  2985.     BNE    NOT_SPACE
  2986.     ADD.L    #32,A4
  2987.     BRA    LOOP_TXT
  2988. NOT_SPACE
  2989.     CMP.B    #13,D0
  2990.     BNE    NOT_RETURN
  2991.     MOVE.L    ECRANRO,A4    * MY SCR
  2992.     ADD.L    #64*640+160,A4
  2993.     BRA    LOOP_TXT
  2994. NOT_RETURN
  2995.     SUB.W    #$30,D0
  2996.     MOVE.L    (A0,D0.W*4),A3    *THE SPRITE
  2997.     MOVE.L    A4,A5
  2998.     ADD.L    #32,A4
  2999.     MOVEQ    #31,D7
  3000. LOOP_AFF_LETTRE
  3001.     REPT    8
  3002.     MOVE.L    (A3)+,(A5)+
  3003.     ENDR
  3004.     LEA    640-32(A3),A3
  3005.     LEA    640-32(A5),A5
  3006.     DBRA    D7,LOOP_AFF_LETTRE
  3007.     BRA    LOOP_TXT
  3008. PLUS_TXT
  3009.     * BON BEIN FAUT L'AFFICHER MAINTENANT
  3010.     
  3011.     MOVE.W    DIFICULT,D0
  3012.     SUBQ    #1,D0
  3013.     LEA    TAB_HS_TAB,A0
  3014.     MOVE.L    (A0,D0.W*4),A2    *TABLEAU HIGHSCORE CUR DIF
  3015.     MOVEQ    #0,D5    * 1ST LETTER OF THE NAME
  3016.     MOVE.L    A2,A6
  3017.     LEA    TAB_FONTE,A0
  3018.     MOVE.L    ECRANRO,A4    * MY SCR
  3019.     ADD.L    #120*640,A4
  3020.     
  3021. AFF_NAME    
  3022.     MOVEQ    #0,D0
  3023.     MOVE.B    (A2)+,D0
  3024.     CMP.B    #0,D0
  3025.     BNE    CONT_NAME
  3026.     BRA    NOW_SCORE
  3027. CONT_NAME
  3028.     CMP.B    #$20,D0
  3029.     BNE    CONT_NAME_2
  3030.     ADD.L    #32,A4
  3031.     BRA    AFF_NAME
  3032. CONT_NAME_2
  3033.     SUB.W    #$30,D0
  3034.     MOVE.L    (A0,D0.W*4),A3    *THE SPRITE
  3035.     MOVE.L    A4,A5
  3036.     ADD.L    #32,A4
  3037.     MOVEQ    #31,D6
  3038. LOOP_AFF_NAME
  3039.     REPT    8
  3040.     MOVE.L    (A3)+,(A5)+
  3041.     ENDR
  3042.     LEA    640-32(A3),A3
  3043.     LEA    640-32(A5),A5
  3044.     DBRA    D6,LOOP_AFF_NAME
  3045.     BRA    AFF_NAME
  3046. NOW_SCORE
  3047.     LEA    12(A6),A2
  3048.     LEA    DECIMAL_HS,A3
  3049.     MOVE.L    (A2),D0
  3050.     CMP.L    #10,D0
  3051.     BGE.S    SUP_10_2
  3052.     ADD.B    #'0',D0
  3053.     MOVE.B    D0,(A3)+
  3054.     BRA.S    PLUS_DIGIT_2
  3055. SUP_10_2
  3056.     MOVE.L    #1000000,D2
  3057.     MOVEQ    #6,D7    * SUR 7 CHIFFRES
  3058. LOOP_D_HS
  3059.     MOVEQ    #0,D1
  3060.     DIVU.L    D2,D1:D0
  3061.     ADD.B    #'0',D0
  3062.     MOVE.B    D0,(A3)+
  3063.     MOVE.L    D1,D0
  3064.     DIVU.L    #10,D2
  3065.     DBRA    D7,LOOP_D_HS
  3066. PLUS_DIGIT_2
  3067.     BSR    AFF_SCORE_2 
  3068.  
  3069.     ADDQ.W    #1,D5    * NB DE NOM
  3070.     MOVE.W    D5,NUM_NOM
  3071.     CMP.B    #10,D5
  3072.     BEQ    PLUS_DE_NOM
  3073. CONT_THE_NAME
  3074.     LEA    16(A6),A6
  3075.     MOVE.L    A6,A2
  3076.     MOVE.L    ECRANRO,A4    * MY SCR
  3077.     MULU.W    #640*36,D5
  3078.     ADD.L    #640*120,D5
  3079.     ADD.L    D5,A4
  3080.     MOVEQ    #0,D5
  3081.     MOVE.W    NUM_NOM,D5
  3082.     BRA    AFF_NAME
  3083.  
  3084. PLUS_DE_NOM
  3085.     CMP.W    #1,FADE_FLAG
  3086.     BEQ.S    NO_FADE2
  3087.     
  3088.     IFEQ    DEBUG
  3089.     MOVE.L    #PAL,A0
  3090.     MOVEQ    #1,D0
  3091.     BSR    FADE_IN256
  3092.     ENDC
  3093.     BSR    CLR_KEYB
  3094. NO_FADE2
  3095.     MOVE.B    #0,KEY
  3096.     BSR    GET_CHAR
  3097.     CMP.B    #0,KEY
  3098.     BEQ    NO_FADE2
  3099.     RTS
  3100.  
  3101. AFF_SCORE_2
  3102.     MOVEM.L    D0-D7/A0-A6,-(A7)
  3103.     MOVEQ    #0,D0
  3104.     MOVE.L    D0,D1
  3105.     MOVE.L    D0,D2
  3106.     MOVE.L    D0,D3
  3107.     MOVE.L    D0,D4
  3108.     MOVE.L    D0,D5
  3109.     MOVE.L    D0,D6
  3110.     MOVE.L    D0,D7
  3111.     MOVE.W    NUM_NOM,D3
  3112.     MULU.L    #640*36,D3
  3113.     ADD.L    #(640*216)+(640-32),D3
  3114.     ADD.L    D5,A4
  3115.     
  3116.     LEA    DECIMAL_HS,A2
  3117.     LEA    TAB_DIGIT,A3
  3118. PURGE_0_2
  3119.     MOVE.B    (A2)+,D1
  3120.     CMP.B    #0,D1
  3121.     BEQ    PLUS_DIGIT_2
  3122.     CMP.B    #'0',D1
  3123.     BEQ    PURGE_0_2
  3124.     SUBQ.L    #1,A2
  3125.     MOVE.L    A2,A6
  3126. GET_LAST_2
  3127.     CMP.B    #0,(A2)+
  3128.     BNE    GET_LAST_2
  3129.     SUBQ.L    #2,A2
  3130.     MOVE.B    (A2),D1
  3131. LOOP_AFF_SCORE_2
  3132.     SUB    #'0',D1
  3133.     MOVE.L    (A3,D1.W*4),SPRITE    *ON A LE SPRITE
  3134.     MOVE.L    D3,OFFSET
  3135.     BSR    AFF_SPRT
  3136.     CMP.L    A2,A6
  3137.     BEQ    PLUS_DIGIT_2_2
  3138.     SUBQ.L    #1,A2
  3139.     MOVE.B    (A2),D1
  3140.     SUB.L    #32,D3
  3141.     BRA    LOOP_AFF_SCORE_2
  3142. PLUS_DIGIT_2_2
  3143.     LEA    DECIMAL_HS,A0
  3144.     MOVE.L    #0,(A0)+
  3145.     MOVE.L    #0,(A0)+
  3146.     MOVE.L    #0,(A0)+
  3147.     MOVE.L    #0,(A0)+
  3148.     MOVEM.L    (A7)+,D0-D7/A0-A6
  3149.  
  3150.     RTS    
  3151.     
  3152. PAUSE
  3153.     MOVEM.L    D0-D7/A0-A6,-(A7)
  3154.     MOVE.W    #1,D1
  3155.     LEA    TAB_VIDE,A0
  3156. REDRAW_TAB
  3157.     BSR    REDRAW
  3158.     ADDQ.W    #1,D1
  3159.     CMP.W    #8,D1
  3160.     BLT.S    REDRAW_TAB
  3161.     
  3162.     LEA    PAUSE_SPRT,A0
  3163.     MOVE.L    ECRANRO,A1
  3164.     ADD.L    #(640*(480/2-56))+48,A1
  3165.     BSR    WAIT_VBL
  3166.     MOVEQ    #111,D0
  3167. AFF_PAUSE
  3168.     MOVE.L    #224/4-1,D1
  3169. AFF_P_LOOP    
  3170.     MOVE.L    (A0)+,(A1)+
  3171.     DBRA    D1,AFF_P_LOOP
  3172.     LEA    (640-224)(A1),A1
  3173.     DBRA    D0,AFF_PAUSE
  3174.  
  3175. PAUSE_LOOP
  3176.     BSR    GET_CHAR
  3177.     TST.B    KEY
  3178.     BEQ.S    PAUSE_LOOP
  3179.  
  3180.     MOVE.W    #1,D1
  3181.     LEA    TABLEAU,A0
  3182. REDRAW_TAB_2
  3183.     BSR    REDRAW
  3184.     ADDQ.W    #1,D1
  3185.     CMP.W    #8,D1
  3186.     BLT.S    REDRAW_TAB_2
  3187.  
  3188.     MOVEM.L    D0-D7/A0-A6,-(A7)
  3189.     BRA    PLUS_PAUSE
  3190.         
  3191. DO_INTER
  3192.     CMP.W    #1,SOUND
  3193.     BNE    NO_INTER_SPL
  3194.     MOVE.W    #3,THE_SPL    *INTER.RAW
  3195.     BSR    PLAY_SPE
  3196. NO_INTER_SPL
  3197.  
  3198.     MOVEQ    #0,D6
  3199.     MOVE.L    CUR_Y,D5
  3200.     MULU.L    #640,D5
  3201.     MOVE.B    SAVE_P2,D6
  3202.     MULU.L    #32,D6
  3203.     MULU.W    #640,D6
  3204.     ADD.L    D6,D5
  3205.     ADD.L    CUR_X,D5
  3206.     MOVE.L    D5,OFFSET
  3207.     LEA    TAB_SPR,A4
  3208.     MOVEQ    #2,D7
  3209. LOOP_INTER
  3210.     MOVEQ    #0,D5
  3211.     MOVE.B    SAVE_P1,D5
  3212.     MOVE.L    (A4,D5.W*4),SPRITE
  3213.     BSR    AFF_SPRT
  3214.     REPT    8
  3215.     BSR    WAIT_VBL
  3216.     ENDR
  3217.     MOVEQ    #0,D5
  3218.     MOVE.B    SAVE_P3,D5
  3219.     MOVE.L    (A4,D5.W*4),SPRITE
  3220.     BSR    AFF_SPRT
  3221.     REPT    8
  3222.     BSR    WAIT_VBL
  3223.     ENDR
  3224.     DBRA    D7,LOOP_INTER
  3225.     RTS
  3226. AFF_ARROWS
  3227.     MOVEQ    #0,D0
  3228.     MOVE.L    D0,D1
  3229.     MOVE.L    D0,D2
  3230.     MOVE.W    OLD_ITEM,D1
  3231.     MULU.L    #55*640,D1
  3232.     MOVE.L    ARROW_OFFSET,D2
  3233.     ADD.L    D1,D2
  3234.     MOVE.L    D2,OFFSET
  3235.     MOVE.L    #SAVE,SPRITE    * FOND FLECHE GAUCHE
  3236.     BSR    AFF_SPRT
  3237.     ADD.L    #640-32,OFFSET
  3238.     MOVE.L    #SAVE+(32*32),SPRITE * FOND FLECH DROITE
  3239.     BSR    AFF_SPRT
  3240.     MOVEQ    #0,D1
  3241.     MOVE.W    MENU_ITEM,D1
  3242.     MULU.L    #55*640,D1
  3243.     MOVE.L    ARROW_OFFSET,D2
  3244.     ADD.L    D1,D2
  3245.     MOVE.L    D2,OFFSET
  3246.     BSR    SAVE_FOND_D
  3247.     MOVE.L    #ARROW1,SPRITE
  3248.     MOVE.L    #ARROW1M,MASK
  3249.     BSR    AFF_SPRT_M
  3250.     ADD.L    #640-32,OFFSET
  3251.     BSR    SAVE_FOND_G
  3252.     MOVE.L    #ARROW2,SPRITE
  3253.     MOVE.L    #ARROW2M,MASK
  3254.     BSR    AFF_SPRT_M
  3255.     MOVE.W    MENU_ITEM,OLD_ITEM
  3256. FIN_ARROW
  3257.     RTS
  3258.     
  3259. LITTLE_INIT
  3260.     MOVE.W    #5,OLD_ITEM
  3261.     MOVE.W    #1,DIFICULT
  3262.     MOVE.W    #0,SOUND    * SOUNDTRACK PAR DEFAUT
  3263.     MOVE.L    #0,SCORE
  3264.     LEA    DECIMAL,A0
  3265.     MOVE.L    #0,(A0)+
  3266.     MOVE.L    #0,(A0)+
  3267.     MOVE.L    #0,(A0)+
  3268.     MOVE.L    #0,(A0)+
  3269.     MOVE.L    #0,(A0)+
  3270.     LEA    DECIM_G_O,A0
  3271.     MOVE.L    #0,(A0)+
  3272.     MOVE.L    #0,(A0)+
  3273.     MOVE.L    #0,(A0)+
  3274.     MOVE.L    #0,(A0)+
  3275.     MOVE.L    #0,(A0)+
  3276.     
  3277.     IFEQ    DEMO
  3278.     FILE_OPEN    READ,F_NAME_HS
  3279.     TST.W    D0
  3280.     BMI    NO_FILE
  3281.     MOVE.W    D0,F_HANDLE
  3282.     FILE_READ    #TAB_H_SCORE_1,#16*30,F_HANDLE
  3283.     FILE_CLOSE    F_HANDLE
  3284.     
  3285.     BSR    CRYPT
  3286.     ELSE
  3287.     BRA    NO_FILE
  3288.     ENDC
  3289. OK_FILE
  3290.     IFEQ    DEBUG
  3291.     SYNCRO
  3292.     MOVEQ    #1,D0
  3293.     BSR    FADE_OUT256
  3294.     ENDC
  3295.     
  3296.     MOVE.W    $484.W,OLD_484
  3297.     BCLR    #0,$484
  3298.     
  3299.     IFNE    MUSIC
  3300.     BSR    INIT_PLAYER
  3301.     ENDC
  3302.     RTS
  3303.     
  3304. HIGHSCORE    MOVE.W    #1,FADE_FLAG
  3305.     BSR    AFF_H_SCORE
  3306.     
  3307.     LEA    MENU,A0
  3308.     MOVE.L    ECRANRO,A1
  3309.     BSR    DEPACK    * ATOMIK DEPACK NANANANERE !!!
  3310.     BSR    AFF_ARROWS
  3311.     BSR    DO_DIFICULTY    
  3312.     BSR    AFF_SOUND
  3313.     
  3314.     BRA    MENU_LOOP
  3315.     
  3316. DO_DIFICULTY
  3317.     MOVE.W    DIFICULT,D0
  3318.     CMP.W    #4,D0
  3319.     BNE    CONT_DO_DIF
  3320.     MOVE.W    #1,D0
  3321. CONT_DO_DIF
  3322.     MOVE.W    D0,DIFICULT
  3323.     BSR    WAIT_VBL
  3324.     BSR    REST_FOND_DIF
  3325.     MOVE.W    DIFICULT,D0
  3326.     LEA    TAB_DIF,A0
  3327.     LEA    TAB_DIF_M,A1
  3328.     SUBQ    #1,D0
  3329.     MOVE.L    (A0,D0.W*4),A0  *SPRITE DIFICULTY
  3330.     MOVE.L    (A1,D0.W*4),A2  *SPRITE DIFICULTY MASK
  3331.     
  3332.     MOVE.L    #300*640+320+160,OFFSET
  3333.     
  3334.     MOVE.L    ECRANRO_TAB,A1
  3335.     ADD.L    OFFSET,A1
  3336.     MOVEQ    #37,D0
  3337. LOOP_AFF_D
  3338.     MOVE.W    (A2)+,D1
  3339.     REPT 8
  3340.     MOVE.W    (A0)+,D2
  3341.     AND.W    D1,(A1)
  3342.     OR.W    D2,(A1)+
  3343.     ENDR
  3344.     MOVE.W    (A2)+,D1
  3345.     REPT 8
  3346.     MOVE.W    (A0)+,D2
  3347.     AND.W    D1,(A1)
  3348.     OR.W    D2,(A1)+
  3349.     ENDR
  3350.     
  3351.     LEA    640-32(A1),A1
  3352.     DBRA    D0,LOOP_AFF_D
  3353.     RTS
  3354.  
  3355. DO_SOUND
  3356.     CMP.W    #0,SOUND
  3357.     BNE    CONT_SOUND
  3358.     MOVE.W    #1,SOUND    * EFFECTS
  3359.     BRA    AFF_SOUND    
  3360. CONT_SOUND
  3361.     MOVE.W    #0,SOUND    * SOUNDTRACK
  3362. AFF_SOUND
  3363.     BSR    WAIT_VBL
  3364.     BSR    REST_SOUND
  3365.     LEA    TAB_SOUND,A0
  3366.     LEA    TAB_S_MASK,A2
  3367.     MOVE.W    SOUND,D0
  3368.     MOVE.L    (A0,D0.W*4),A0    *HO! LE GROS SPRITE QUE VOILA
  3369.     MOVE.L    (A2,D0.W*4),A2    *HO! LE GROS MASK QUE VOILA
  3370.     
  3371.     MOVE.L    ECRANRO,A1    * MON ECRAN A MOI NA!
  3372.     ADD.L    #(262*640)+(640-272),A1
  3373.     MOVEQ    #31,D7
  3374. LOOP_SOUND
  3375.     MOVE.L    #(240/16)-1,D6
  3376. LOOP_SOUND2
  3377.     MOVE.W    (A2)+,D1    * MASK
  3378.     REPT 8
  3379.     MOVE.W    (A0)+,D2
  3380.     AND.W    D1,(A1)
  3381.     OR.W    D2,(A1)+
  3382.     ENDR
  3383.     DBRA    D6,LOOP_SOUND2
  3384.     LEA    (640-240)(A1),A1
  3385.     DBRA    D7,LOOP_SOUND
  3386.     RTS
  3387.     
  3388. DO_INFO    
  3389.     IFEQ    DEBUG
  3390.     MOVEQ    #1,D0
  3391.     ENDC
  3392.     MOVE.L    #INFO,A0
  3393.     MOVE.L    ECRANRO,A1
  3394.     BSR    DEPACK
  3395.     BSR    CLR_KEYB
  3396.     
  3397.  
  3398. INFO_LOOP
  3399.     MOVE.W    #0,KEY
  3400.     BSR    GET_CHAR
  3401.     CMP.B    #0,KEY
  3402.     BEQ    INFO_LOOP
  3403.  
  3404.     IFEQ    DEBUG
  3405.     MOVEQ    #1,D0
  3406.     ENDC
  3407.     
  3408.     LEA    MENU,A0
  3409.     MOVE.L    ECRANRO,A1
  3410.     BSR    DEPACK    * ATOMIK DEPACK NANANANERE !!!
  3411.     BSR    CLR_KEYB
  3412.     BSR    AFF_ARROWS
  3413.     BSR    DO_DIFICULTY    
  3414.     BSR    AFF_SOUND
  3415.     
  3416.  
  3417.     BRA    MENU_LOOP
  3418.     
  3419. SAVE_FOND_DIF
  3420.     MOVE.L    ECRANRO_TAB,A0
  3421.     LEA    SAVE_D,A1
  3422.     ADD.L    #300*640+320+160,A0
  3423.     MOVEQ    #38,D0
  3424. LOOP_F_DIF
  3425.     REPT 8
  3426.     MOVE.L    (A0)+,(A1)+
  3427.     ENDR
  3428.     LEA    640-32(A0),A0
  3429.     DBRA    D0,LOOP_F_DIF
  3430.     RTS
  3431.  
  3432. REST_FOND_DIF
  3433.     MOVE.L    ECRANRO_TAB,A0
  3434.     LEA    SAVE_D,A1
  3435.     ADD.L    #300*640+320+160,A0
  3436.     MOVEQ    #38,D0
  3437. LOOP_R_DIF
  3438.     REPT 8
  3439.     MOVE.L    (A1)+,(A0)+
  3440.     ENDR
  3441.     LEA    640-32(A0),A0
  3442.     DBRA    D0,LOOP_R_DIF
  3443.     RTS
  3444.     
  3445. SAVE_FOND_SOUND
  3446.     MOVE.L    ECRANRO,A0
  3447.     LEA    SAVE_S,A1
  3448.     ADD.L    #(262*640)+(640-272),A0
  3449.     MOVEQ    #31,D0
  3450. LOOP_F_SOUND
  3451.     REPT (240/4)
  3452.     MOVE.L    (A0)+,(A1)+
  3453.     ENDR
  3454.     LEA    640-240(A0),A0
  3455.     DBRA    D0,LOOP_F_SOUND
  3456.     RTS
  3457. REST_SOUND
  3458.     MOVE.L    ECRANRO,A0
  3459.     LEA    SAVE_S,A1
  3460.     ADD.L    #(262*640)+(640-272),A0
  3461.     MOVEQ    #31,D0
  3462. LOOP_R_SOUND
  3463.     REPT (240/4)
  3464.     MOVE.L    (A1)+,(A0)+
  3465.     ENDR
  3466.     LEA    640-240(A0),A0
  3467.     DBRA    D0,LOOP_R_SOUND
  3468.     RTS
  3469. TEST_OF_LINE
  3470.     MOVEM.L    D0-D7/A0-A6,-(A7)
  3471.     LEA    TABLEAU,A0
  3472.     MOVE.W    #18,D1    *LA LIGNE DU BAS
  3473.     MOVEQ    #0,D0
  3474.     MULU.W    #9,D1
  3475. LOOP_TEST_VIDE
  3476.     ADDQ.W    #1,D1
  3477.     MOVE.B    (A0,D1.W),D7
  3478.     CMP.B    #$FF,D7
  3479.     BEQ    NOT_VIDE
  3480.     CMP.B    #0,D7
  3481.     BNE    NOT_VIDE
  3482.     ADDQ.W    #1,D0
  3483.     BRA    LOOP_TEST_VIDE
  3484.     
  3485. NOT_VIDE
  3486.     CMP.W    #7,D0
  3487.     BNE    FIN_TEST_VIDE
  3488.     MOVE.W    #19,TOP_OF_LINE
  3489. FIN_TEST_VIDE
  3490.     MOVEM.L    (A7)+,D0-D7/A0-A6
  3491.     RTS    
  3492. PLAY_SPE    MOVEM.L    D0-D7/A0-A6,-(A7)
  3493.     CMP.W    #0,THE_SPL
  3494.     BEQ    WAIT_SPL
  3495.     CMP.W    #1,THE_SPL
  3496.     BEQ    WAIT_SPL
  3497.     CMP.W    #2,THE_SPL
  3498.     BEQ    WAIT_SPL
  3499.     CMP.W    #3,THE_SPL
  3500.     BEQ    WAIT_SPL
  3501.     CMP.W    #4,THE_SPL
  3502.     BEQ    WAIT_SPL
  3503.     CMP.W    #5,THE_SPL
  3504.     BEQ    WAIT_SPL
  3505.     CMP.W    #6,THE_SPL
  3506.     BEQ    WAIT_SPL
  3507.     CMP.W    #10,THE_SPL
  3508.     BEQ    WAIT_SPL
  3509.     CMP.W    #11,THE_SPL
  3510.     BEQ    WAIT_SPL
  3511.     
  3512.     BRA    NOT_WAIT_SPL
  3513.     
  3514. WAIT_SPL
  3515.     MOVE.W    $FFFF8900.W,D0
  3516.     CMP.W    #0,D0
  3517.     BNE    WAIT_SPL
  3518. NOT_WAIT_SPL
  3519.     MOVEQ    #0,D0
  3520.     LEA    TAB_SPL,A2
  3521.     LEA    TAB_SPL_SIZE,A1
  3522.     LEA    SPL_TO_PLAY,A0
  3523.     MOVE.W    THE_SPL,D0
  3524.     MOVE.L    (A2,D0.W*4),(A0)
  3525.     MOVE.L    (A1,D0.W*4),D1
  3526.     
  3527.     MOVE.B    3(A0),$FFFF8907.W
  3528.     MOVE.B    2(A0),$FFFF8905.W
  3529.     MOVE.B    1(A0),$FFFF8903.W
  3530.     ADD.L    D1,(A0)
  3531.     MOVE.B    3(A0),$FFFF8913.W
  3532.     MOVE.B    2(A0),$FFFF8911.W
  3533.     MOVE.B    1(A0),$FFFF890F.W
  3534.     
  3535.     MOVE.W    #1+128,$FFFF8920.W
  3536.     MOVE.W      #1,$FFFF8900.W
  3537.  
  3538.     MOVEM.L    (A7)+,D0-D7/A0-A6
  3539.     RTS
  3540.  
  3541. NO_FILE    
  3542.     IFEQ    DEMO
  3543.     FILE_OPEN WRITE,F_NAME_HS
  3544.     MOVE.W    D0,F_HANDLE
  3545.     FILE_CLOSE    FHANDLE
  3546.     ENDC
  3547.     LEA    SAVE_HS,A0
  3548.     LEA    TAB_H_SCORE_1,A1
  3549.     MOVE.L    #(480/4)-1,D0
  3550. LOOP_NO_FILE
  3551.     MOVE.L    (A0)+,(A1)+
  3552.     DBRA    D0,LOOP_NO_FILE
  3553.     BSR    CRYPT
  3554.     BRA    OK_FILE
  3555.  
  3556. CLR_KEYB
  3557. .wait_nul:    appel dos,$0b,2    ; teste du buffer ...
  3558.     tst.w d0
  3559.     beq.s .the_end    ; pas de touche en buffer ?
  3560.     wait
  3561.     bra.s .wait_nul
  3562. .the_end:
  3563.     RTS
  3564. SPECIAL_SET_MODE
  3565.     BSR    SETMODE
  3566.     CMP.W    #1,TV_MODE
  3567.     BEQ    OK_TV
  3568.     BRA    GO
  3569.     
  3570. init_joy:    appel xbios,34,2
  3571.     move.l d0,a0
  3572.     move.l 6*4(a0),save_joy
  3573.     move.l a0,save_joy+4
  3574.     move.l #my_joy,6*4(a0)
  3575.     move.l #joy_param,-(a7)
  3576.     move.w #2,-(a7)
  3577.     appel xbios,$19,8
  3578.     rts
  3579. restore_joy:
  3580.     move.l save_joy+4,a0
  3581.     move.l save_joy,6*4(a0)
  3582.     move.l #stop_joy,-(a7)
  3583.     move.w #1,-(a7)
  3584.     appel xbios,$19,8
  3585.     rts
  3586.  
  3587. my_joy:    save d0
  3588.     move.b (a0),d0
  3589.     cmp.b #$ff,d0
  3590.     bne.s pas_joy
  3591.     MOVE.B    #0,J_FLAG
  3592.     move.b 2(a0),d0    * joystick port 1
  3593.     
  3594.     CMP.B    #8,D0
  3595.     BNE    NOT_J8
  3596.     MOVE.B    #$4D,J_FLAG
  3597. NOT_J8
  3598.     CMP.B    #4,D0
  3599.     BNE    NOT_J4
  3600.     MOVE.B    #$4B,J_FLAG
  3601. NOT_J4
  3602.     CMP.B    #1,D0
  3603.     BNE    NOT_J1
  3604.     MOVE.B    #$48,J_FLAG
  3605. NOT_J1
  3606.     CMP.B    #2,D0
  3607.     BNE    NOT_J2
  3608.     MOVE.B    #$50,J_FLAG
  3609. NOT_J2
  3610.     BTST    #7,D0
  3611.     BEQ    NOT_B7
  3612.     MOVE.B    #$39,J_FLAG
  3613. NOT_B7
  3614.  
  3615. pas_joy:    load d0
  3616.     rts
  3617. CRYPT
  3618.     LEA    TAB_H_SCORE_1,A0
  3619.     MOVE.L    CLEF,D0
  3620.     MOVE.L    #(480/4)-1,D1
  3621. CRYPT_LOOP    
  3622.     EOR.L    D0,(A0)+
  3623.     DBRA    D1,CRYPT_LOOP
  3624.     RTS
  3625.     
  3626.     INCLUDE    DEPACK35.S        
  3627.     INCLUDE    SETMODE.S
  3628.     IFEQ    DEBUG
  3629.     INCLUDE    MOD_FADE.S
  3630.     ENDC
  3631.     
  3632.     IFNE    MUSIC
  3633.     INCLUDE    DSPMOD.S
  3634.     ENDC
  3635.     
  3636.     
  3637.     DATA
  3638.     EVEN
  3639. save_joy    dc.l    0
  3640.     dc.l    0
  3641. joy_param    dc.b    $12,$1a,$14
  3642.     even
  3643. stop_joy    dc.b    $1A,$08
  3644.     even
  3645. OK    DC.W    $FFFF
  3646. FHANDLE    DC.W    0
  3647. ECRANRO    DC.L    0
  3648. ECRANRO_TAB    DC.L    0
  3649. OLD_SP    DC.L    0
  3650. OLD_70    DC.L    0
  3651. CLEF    DC.L    31415926
  3652. FLAG    DC.W    0
  3653. PAL    INCBIN    PAL_COLU.PAL
  3654.     EVEN
  3655. OLD_PAL    DCB.L    260
  3656. OLD_REZ    DC.W    0
  3657. OLD_PHYS    DC.L    0
  3658. OLD_LOG    DC.L    0
  3659. SYSTEM_SP    DC.L    0
  3660. LEV_LOAD    DC.L    LEV0,LEV1,LEV2,LEV3,LEV4,LEV5,LEV6,LEV7,LEV8,LEV9
  3661.     EVEN
  3662. LEV0    DC.B    'PIC0.LEV',0
  3663.     EVEN
  3664. LEV1    DC.B    'PIC1.LEV',0
  3665.     EVEN
  3666. LEV2    DC.B    'PIC2.LEV',0
  3667.     EVEN
  3668. LEV3    DC.B    'PIC3.LEV',0
  3669.     EVEN
  3670. LEV4    DC.B    'PIC4.LEV',0
  3671.     EVEN
  3672. LEV5    DC.B    'PIC5.LEV',0
  3673.     EVEN
  3674. LEV6    DC.B    'PIC6.LEV',0
  3675.     EVEN
  3676. LEV7    DC.B    'PIC7.LEV',0
  3677.     EVEN
  3678. LEV8    DC.B    'PIC8.LEV',0
  3679.     EVEN
  3680. LEV9    DC.B    'PIC9.LEV',0
  3681.     EVEN
  3682. F_NAME_HS    DC.B    'COLUMS.HS',0
  3683. TITLE    INCBIN    TITLE.BIN
  3684. *TITLE    INCBIN    PIECE.BIN
  3685.     EVEN
  3686. MENU    INCBIN    MENU.PAC
  3687.     EVEN
  3688. FOND2    INCBIN    CADRE.BIN
  3689.     EVEN
  3690. INFO    INCBIN    INFO.BIN
  3691.     EVEN
  3692. G_OVER    INCBIN    G_OVER.BIN
  3693.     EVEN
  3694. FONTE    INCBIN    FONTE.BIN
  3695. LEV_PTR    DC.L    0
  3696.     EVEN
  3697. TABLEAU    
  3698.     DC.B    255,0,0,0,0,0,0,0,255
  3699.     DC.B    255,0,0,0,0,0,0,0,255
  3700.     DC.B    255,0,0,0,0,0,0,0,255
  3701.     DC.B    255,0,0,0,0,0,0,0,255
  3702.     DC.B    255,0,0,0,0,0,0,0,255
  3703.     DC.B    255,0,0,0,0,0,0,0,255
  3704.     DC.B    255,0,0,0,0,0,0,0,255
  3705.     DC.B    255,0,0,0,0,0,0,0,255
  3706.     DC.B    255,0,0,0,0,0,0,0,255
  3707.     DC.B    255,0,0,0,0,0,0,0,255
  3708.     DC.B    255,0,0,0,0,0,0,0,255
  3709.     DC.B    255,0,0,0,0,0,0,0,255
  3710.     DC.B    255,0,0,0,0,0,0,0,255
  3711.     DC.B    255,0,0,0,0,0,0,0,255
  3712.     DC.B    255,0,0,0,0,0,0,0,255
  3713.     DC.B    255,0,0,0,0,0,0,0,255
  3714.     DC.B    255,0,0,0,0,0,0,0,255
  3715.     DC.B    255,0,0,0,0,0,0,0,255
  3716.     DC.B    255,0,0,0,0,0,0,0,255
  3717.     DC.B    255,255,255,255,255,255,255,255,255
  3718.     EVEN
  3719.     
  3720.     IFEQ    DEBUG    
  3721. TAB_VIDE
  3722.     DC.B    255,0,0,0,0,0,0,0,255
  3723.     DC.B    255,0,0,0,0,0,0,0,255
  3724.     DC.B    255,0,0,0,0,0,0,0,255
  3725.     DC.B    255,0,0,0,0,0,0,0,255
  3726.     DC.B    255,0,0,0,0,0,0,0,255
  3727.     DC.B    255,0,0,0,0,0,0,0,255
  3728.     DC.B    255,0,0,0,0,0,0,0,255
  3729.     DC.B    255,0,0,0,0,0,0,0,255
  3730.     DC.B    255,0,0,0,0,0,0,0,255
  3731.     DC.B    255,0,0,0,0,0,0,0,255
  3732.     DC.B    255,0,0,0,0,0,0,0,255
  3733.     DC.B    255,0,0,0,0,0,0,0,255
  3734.     DC.B    255,0,0,0,0,0,0,0,255
  3735.     DC.B    255,0,0,0,0,0,0,0,255
  3736.     DC.B    255,0,0,0,0,0,0,0,255
  3737.     DC.B    255,0,0,0,0,0,0,0,255
  3738.     DC.B    255,0,0,0,0,0,0,0,255
  3739.     DC.B    255,0,0,0,0,0,0,0,255
  3740.     DC.B    255,0,0,0,0,0,0,0,255
  3741.     DC.B    255,255,255,255,255,255,255,255,255
  3742.     ELSE
  3743. TAB_VIDE
  3744.     DC.B    255,0,0,0,0,0,0,0,255
  3745.     DC.B    255,0,0,0,0,0,0,0,255
  3746.     DC.B    255,0,0,0,0,0,0,0,255
  3747.     DC.B    255,0,0,0,0,0,0,0,255
  3748.     DC.B    255,0,0,0,0,0,0,0,255
  3749.     DC.B    255,0,0,0,0,0,0,0,255
  3750.     DC.B    255,0,0,0,0,0,0,0,255
  3751.     DC.B    255,0,0,0,0,0,0,0,255
  3752.     DC.B    255,0,0,0,0,0,0,0,255
  3753.     DC.B    255,0,0,0,0,0,0,0,255
  3754.     DC.B    255,0,0,0,0,0,0,0,255
  3755.     DC.B    255,0,0,0,0,0,0,0,255
  3756.     DC.B    255,0,0,0,0,0,0,0,255
  3757.     DC.B    255,0,0,0,0,0,0,0,255
  3758.     DC.B    255,0,0,0,0,0,0,0,255
  3759.     DC.B    255,13,12,0,0,0,0,0,255
  3760.     DC.B    255,14,12,12,0,0,0,0,255
  3761.     DC.B    255,15,12,12,0,0,0,0,255
  3762.     DC.B    255,12,13,14,0,0,0,0,255
  3763.     DC.B    255,255,255,255,255,255,255,255,255
  3764.  
  3765.     ENDC
  3766.         EVEN
  3767.  
  3768.     
  3769. APPLE    INCBIN    APPLE.BIN
  3770. YANG     INCBIN    YANG.BIN
  3771. CHICKEN    INCBIN    CHICKEN.BIN
  3772. JOYSTICK    INCBIN    JOYSTICK.BIN
  3773. MAN    INCBIN    MAN.BIN
  3774. WOMAN    INCBIN    WOMAN.BIN
  3775. SKWEEK    INCBIN    SKWEEK.BIN
  3776. ATOMIC    INCBIN    ATOMIC.BIN
  3777. INTER    INCBIN    INTER.BIN
  3778. STAR    INCBIN    STAR.BIN
  3779. DISK    INCBIN    DISK.BIN
  3780. WALL    INCBIN    WALL.BIN
  3781. M    INCBIN    M.BIN    
  3782. C    INCBIN    C.BIN    
  3783. S    INCBIN    S.BIN    
  3784. SMILE    INCBIN    SMILE.BIN    
  3785. BULLE    INCBIN    BULLE.BIN    
  3786. EXPLO1_1    INCBIN    EXPLO1_1.BIN    
  3787. EXPLO1_2    INCBIN    EXPLO1_2.BIN    
  3788. EXPLO1_3    INCBIN    EXPLO1_3.BIN    
  3789. EXPLO1_4    INCBIN    EXPLO1_4.BIN    
  3790. EXPLO2_1    INCBIN    EXPLO2_1.BIN    
  3791. EXPLO2_2    INCBIN    EXPLO2_2.BIN    
  3792. EXPLO2_3    INCBIN    EXPLO2_3.BIN    
  3793. EXPLO2_4    INCBIN    EXPLO2_4.BIN    
  3794. DIGIT_0    INCBIN    0.BIN
  3795. DIGIT_1    INCBIN    1.BIN
  3796. DIGIT_2    INCBIN    2.BIN
  3797. DIGIT_3    INCBIN    3.BIN
  3798. DIGIT_4    INCBIN    4.BIN
  3799. DIGIT_5    INCBIN    5.BIN
  3800. DIGIT_6    INCBIN    6.BIN
  3801. DIGIT_7    INCBIN    7.BIN
  3802. DIGIT_8    INCBIN    8.BIN
  3803. DIGIT_9    INCBIN    9.BIN
  3804. NEXT    INCBIN    NEXT.BIN
  3805. PAUSE_SPRT    INCBIN    PAUSE.SPR
  3806. ARROW1    INCBIN    ARROW1.SPR
  3807. ARROW2    INCBIN    ARROW2.SPR
  3808. ARROW1M    INCBIN    ARROW1.MSK
  3809. ARROW2M    INCBIN    ARROW2.MSK
  3810. D_1    INCBIN    D1.SPR
  3811. D_2    INCBIN    D2.SPR
  3812. D_3    INCBIN    D3.SPR
  3813. D_1M    INCBIN    D1.MSK
  3814. D_2M    INCBIN    D2.MSK
  3815. D_3M    INCBIN    D3.MSK
  3816.  
  3817. SNDTRK    INCBIN    SNDTRK.SPR
  3818. EFFECTS    INCBIN    EFFECTS.SPR
  3819. SNDTRK_M    INCBIN    SNDTRK.MSK
  3820. EFFECTS_M    INCBIN    EFFECTS.MSK
  3821.  
  3822. REGS_50    DC.W    $0265,$002F,$0056,$0236 ; 640*400 -> 640*480 PAL
  3823. REGS_60    DC.W    $0201,$0016,$0020,$0200 ; 640*400 -> 640*480 NTSC
  3824. TAB_DIF    DC.L    D_1,D_2,D_3
  3825. TAB_DIF_M    DC.L    D_1M,D_2M,D_3M
  3826. TAB_SOUND    DC.L    SNDTRK,EFFECTS
  3827. TAB_S_MASK    DC.L    SNDTRK_M,EFFECTS_M
  3828.  
  3829.     IFNE    MUSIC
  3830. TAB_MOD    DC.L    TRUC5,SPACE7,KDANCE8
  3831.     ENDC
  3832. TAB_DIGIT    DC.L    DIGIT_0,DIGIT_1,DIGIT_2,DIGIT_3,DIGIT_4
  3833.     DC.L    DIGIT_5,DIGIT_6,DIGIT_7,DIGIT_8,DIGIT_9
  3834. TAB_SPR    DC.L    NULL,APPLE,YANG,CHICKEN,JOYSTICK,MAN,WOMAN,SKWEEK
  3835.     DC.L    ATOMIC,INTER,STAR,DISK,WALL,M,C,S,SMILE,BULLE
  3836. TAB_EXPL1    DC.L    EXPLO1_1,EXPLO1_2,EXPLO1_3,EXPLO1_4,NULL
  3837. TAB_EXPL2    DC.L    EXPLO2_1,EXPLO2_2,EXPLO2_3,EXPLO2_4,NULL
  3838. TAB_DIF_LEV    DC.L    TAB_CHG_1,TAB_CHG_2,TAB_CHG_3
  3839. TAB_CHG_LEV    DC.L    0
  3840. TAB_CHG_1    DC.W    60,90,120,150,180,210,240,290,320,65535
  3841. TAB_CHG_2    DC.W    90,135,180,225,270,315,360,405,450,65535
  3842. TAB_CHG_3    DC.W    140,210,280,350,420,490,560,630,700,65535
  3843. TAB_DUBS    DC.L    M,C,S,SMILE
  3844. TAB_VAL_RAND    DC.B    1,7,8,10
  3845. TAB_SPL    DC.L    SPL_BOUM,SPL_BULLE,FIOUIPZ,SPL_INTER,NORMAL
  3846.     DC.L    SPL_PAUSE,SPL_SMILE,SPL_SPACE,SPL_STAR
  3847.     DC.L    TINGCLAC,TOUGOUDN,TOUGZING,ZIOUP
  3848. TAB_SPL_SIZE    DC.L    11440,3064,26645,6287,4796,948,8479,1950,2873,10314,5267,13522,2835
  3849. TAB_FONTE    DC.L    FONTE,FONTE+32,FONTE+64,FONTE+96,FONTE+128,FONTE+160,FONTE+192,FONTE+224
  3850.     DC.L    FONTE+256,FONTE+288,FONTE+320,FONTE+352,FONTE+384,FONTE+416,FONTE+448
  3851.     DC.L    FONTE+480,FONTE+512,FONTE+544,FONTE+576,FONTE+608
  3852.     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
  3853.     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
  3854.     DC.L    FONTE+(32*640)+480,FONTE+(32*640)+512,FONTE+(32*640)+544,FONTE+(32*640)+576,FONTE+(32*640)+608
  3855.     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
  3856.     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
  3857.     DC.L    FONTE+(64*640)+480,FONTE+(64*640)+512,FONTE+(64*640)+544,FONTE+(64*640)+576,FONTE+(64*640)+608
  3858. TAB_HS_TAB    DC.L    TAB_H_SCORE_1,TAB_H_SCORE_2,TAB_H_SCORE_3
  3859. CASE_LEVEL    DC.B    1,3,4,5
  3860. CUR_PIECE    DC.W    0,0,0,0
  3861. SAVE_P1    DC.B    0
  3862. SAVE_P2    DC.B    0
  3863. SAVE_P3    DC.W    0
  3864.  
  3865. NEXT_PIECE    DC.W    0,0,0,0
  3866. TOP_OF_LINE    DC.W    $FF
  3867. NEXT_X_Y    DC.L    96*640+16*640
  3868. ARROW_OFFSET    DC.L    245*640
  3869.     IFNE    MUSIC
  3870. TRUC5    INCBIN    TRUC5.PAC
  3871.     EVEN
  3872. SPACE7    INCBIN    SPACE7.PAC
  3873.     EVEN
  3874. KDANCE8    INCBIN    KDANCE8.PAC
  3875.     EVEN
  3876. BBP7    INCBIN    BBP7.PAC
  3877.     ENDC
  3878.     EVEN
  3879. SPL_BOUM    INCBIN    BOOM.RAW
  3880.     EVEN
  3881. SPL_BULLE    INCBIN    BULLE.RAW
  3882.     EVEN
  3883. FIOUIPZ    INCBIN    FIOUIPZ.RAW
  3884.     EVEN
  3885. SPL_INTER    INCBIN     INTER.RAW
  3886.     EVEN
  3887. NORMAL    INCBIN    NORMAL.RAW
  3888.     EVEN
  3889. SPL_PAUSE    INCBIN    PAUSE.RAW
  3890.     EVEN
  3891. SPL_SMILE    INCBIN    SMILE.RAW
  3892.     EVEN
  3893. SPL_SPACE    INCBIN    SPACE.RAW
  3894.     EVEN
  3895. SPL_STAR    INCBIN    STAR.RAW
  3896.     EVEN
  3897. TINGCLAC    INCBIN    TINGCLAC.RAW
  3898.     EVEN
  3899. TOUGOUDN    INCBIN    TOUGOUDN.RAW
  3900.     EVEN
  3901. TOUGZING    INCBIN    TOUGZING.RAW
  3902.     EVEN
  3903. ZIOUP    INCBIN    ZIOUP.RAW
  3904.     EVEN
  3905. TXT_HS    DC.B    "HIGHSCORE",13,"DIFFICULTY  "
  3906. FIN_TXT_HS    
  3907.  
  3908.     EVEN
  3909. SAVE_HS
  3910.     INCBIN    COLUMSHS.BIN
  3911.     IFNE    DEMO
  3912. LEVEL    INCBIN    PIC0.LEV
  3913.     ENDC
  3914.     
  3915.     BSS
  3916.     EVEN
  3917. OLD_484    DS.W    1
  3918. TAB_H_SCORE_1    DS.B    (12+4)*10
  3919. TAB_H_SCORE_2    DS.B    (12+4)*10
  3920. TAB_H_SCORE_3    DS.B    (12+4)*10
  3921. J_FLAG    DS.W    1
  3922. FADE_FLAG    DS.W    1
  3923. THE_SPL    DS.W    1
  3924. SPL_TO_PLAY    DS.L    1
  3925. CUR_NAME    DS.B    12
  3926. PTR_CUR    DS.W    1
  3927. SAVE    DS.B    32*32*2
  3928. SAVE_D    DS.B    32*48
  3929. SAVE_S    DS.B    32*240
  3930. MASK    DS.L    1
  3931. TAB_SAVE    DS.B    22
  3932. TV_MODE    DS.W    1
  3933. MENU_ITEM    DS.W    1
  3934. OLD_ITEM    DS.W    1
  3935. SOUND    DS.W    1
  3936. SWAPPER    DS.L    1
  3937. DO_IT_NORMAL    DS.W    1
  3938. REDONDANCE    DS.W    1
  3939. NB_EXPL    DS.W    1
  3940. CUR_COLONE    DS.W    1
  3941. CUR_LIGNE    DS.W    1
  3942. CUR_X    DS.L    1
  3943. CUR_Y    DS.L    1
  3944. INC_Y    DS.W    1
  3945. WAIT_POSE    DS.W    1
  3946. NO_ROTAT    DS.W    1
  3947. LINE_EXP    DS.W    1
  3948. COL_EXP    DS.W    1
  3949. CUR_LEVEL    DS.W    1
  3950. CUR_DUBS    DS.W    1
  3951. NB_PIECE    DS.W    1
  3952. WAIT_Y    DS.W    1
  3953. WAIT_Y_SAVE    DS.W    1
  3954. GD_FLAG    DS.W    1
  3955. B_FLAG    DS.W    1
  3956. NB_SCANNED    DS.W    1
  3957. NB_MUR    DS.W    1
  3958. DIFICULT    DS.W    1
  3959. PTR_EXPL    DS.W    1
  3960. PTR_POINT    DS.W    1
  3961. PTR_PIECE    DS.W    1
  3962. EXPL_TYPE    DS.W    1
  3963. NULL    DS.B    32*32
  3964.     DS.L    1
  3965. OFFSET    DS.L    1
  3966. SPRITE    DS.L    1
  3967. MOUSEPARAM    DS.B    1
  3968. XMOUSE    DS.W    1
  3969. YMOUSE    DS.W    1    
  3970. KEY    DS.B    1
  3971. KEY_SAVE    DS.B    1
  3972. F_HANDLE    DS.W    1
  3973.     EVEN
  3974. NUM_NOM    DS.W    1
  3975. SCORE    DS.L    1
  3976. DECIMAL    DS.B    20
  3977. DECIMAL_HS    DS.B    20
  3978. DECIM_G_O    DS.B    20
  3979. PIECE    DS.B    20*10
  3980. THE_PIECE    DS.B    1
  3981.     EVEN
  3982. SCANNED    DS.L    7*21
  3983. TAB_EXPL    
  3984.     DS.L    7*21
  3985. TAB_EXPL_TRIE    
  3986.     DS.L    7*21
  3987.     IFEQ    DEMO
  3988. LEVEL    DS.B    64000
  3989.     ELSE
  3990.     DS.B    64000
  3991.     ENDC
  3992. SCR_CLIP
  3993.     DS.B    640*100
  3994. SCR
  3995.     DS.B    640*480
  3996.  
  3997.     END
  3998.