home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 556b.lha / DiamondQuest_v1.1 / DekaQuest.asm < prev    next >
Assembly Source File  |  1991-09-17  |  49KB  |  2,716 lines

  1.  
  2.  INCLUDE "exec/types.i"
  3.  INCLUDE "exec/ports.i"
  4.  INCLUDE "exec/io.i"
  5.  INCLUDE "exec/memory.i"
  6.  INCLUDE "devices/audio.i"
  7.  INCLUDE "libraries/dosextens.i"
  8.  INCLUDE "intuition/intuition.i"
  9.  INCLUDE "intuition/screens.i"
  10.  INCLUDE "graphics/gfx.i"
  11.  
  12.  xref _AbsExecBase
  13.  xref _BeginIO
  14.  xref _LVOAbortIO
  15.  xref _LVOAddPort
  16.  xref _LVOAllocMem
  17.  xref _LVOAllocSignal
  18.  xref _LVOChangeSprite
  19.  xref _LVOCheckIO
  20.  xref _LVOClose
  21.  xref _LVOCloseDevice
  22.  xref _LVOCloseLibrary
  23.  xref _LVOCloseScreen
  24.  xref _LVOCloseWindow
  25.  xref _LVODisplayAlert
  26.  xref _LVODisplayBeep
  27.  xref _LVODoIO
  28.  xref _LVODrawImage
  29.  xref _LVOFindPort
  30.  xref _LVOFindTask
  31.  xref _LVOFreeMem
  32.  xref _LVOFreeSprite
  33.  xref _LVOFreeSignal
  34.  xref _LVOGetMsg
  35.  xref _LVOGetSprite
  36.  xref _LVOInitBitMap
  37.  xref _LVOInitRastPort
  38.  xref _LVOLoadRGB4
  39.  xref _LVOMove
  40.  xref _LVOMoveSprite
  41.  xref _LVOOpen
  42.  xref _LVOOpenDevice
  43.  xref _LVOOpenLibrary
  44.  xref _LVOOpenScreen
  45.  xref _LVOOpenWindow
  46.  xref _LVOOutput
  47.  xref _LVOPolyDraw
  48.  xref _LVOPutMsg
  49.  xref _LVORead
  50.  xref _LVOReadPixel
  51.  xref _LVORectFill
  52.  xref _LVORemPort
  53.  xref _LVOReplyMsg
  54.  xref _LVOSendIO
  55.  xref _LVOSetAPen
  56.  xref _LVOSetPointer
  57.  xref _LVOSetRast
  58.  xref _LVOText
  59.  xref _LVOViewPortAddress
  60.  xref _LVOWait
  61.  xref _LVOWaitIO
  62.  xref _LVOWaitPort
  63.  xref _LVOWrite
  64.  xref _LVOWritePixel
  65.  
  66.  section game,CODE
  67.  
  68.  movea.l #intname,a1
  69.  moveq #31,d0
  70.  movea.l 4,a6
  71.  jsr _LVOOpenLibrary(a6)
  72.  move.l d0,intbase
  73.  beq abort
  74.  movea.l #dosname,a1
  75.  moveq #0,d0
  76. ; movea.l 4,a6
  77.  jsr _LVOOpenLibrary(a6)
  78.  move.l d0,dosbase
  79.  beq abort
  80.  movea.l #grname,a1
  81.  moveq #0,d0
  82. ; movea.l 4,a6
  83.  jsr _LVOOpenLibrary(a6)
  84.  move.l d0,grbase
  85.  beq abort
  86.  
  87.   suba.l a1,a1
  88.   jsr _LVOFindTask(a6)
  89.   movea.l d0,a4
  90.   tst.l pr_CLI(a4)
  91.   bne yes_cli
  92.  
  93.   lea pr_MsgPort(a4),a0
  94.   jsr _LVOWaitPort(a6)
  95.   lea pr_MsgPort(a4),a0
  96.   jsr _LVOGetMsg(a6)
  97.   move.l d0,returnmsg
  98.  
  99. yes_cli
  100. ;**************
  101.  
  102.  bsr init_audio
  103.  tst.l d0
  104.  beq vapautukset ; ei vapauteta spritejä
  105.  
  106.  bsr alusta_kentta
  107.  tst.l d0
  108.  beq vapautukset ;
  109.  bsr avaa_ruutu
  110.  tst.l d0
  111.  beq vapautukset ;
  112.  
  113.  bsr muuta_varit
  114.  bsr tee_spritet
  115.  tst.l d0
  116.  beq vapauta_spritet
  117.  
  118.  bsr game_info_screen
  119.  
  120. actual_game
  121.  
  122.  move.b #0,nkentta
  123.  lea msg9,a0
  124.  moveq #msglen9,d7
  125.  move.l #186,d0
  126.  move.l #244,d1
  127.  moveq #9,d6
  128.  bsr kirjoita
  129.  lea msg10,a0
  130.  moveq #msglen10,d7
  131.  move.l #100,d0
  132.  move.l #254,d1
  133.  moveq #14,d6
  134.  bsr kirjoita
  135.  bsr kirjoita_taso
  136.  
  137.  bsr do_voice_bell
  138.  
  139.   lea maps,a0
  140.   move.l #mapslen,d1
  141.   move.l #2940,d6
  142.   move.l kenttac,d7
  143.   bsr Lataa ; ladataan kartat muistiin
  144.  tst.l d0
  145.  beq vapauta_spritet ; karttaa ei löytynyt
  146.  
  147.  move.w #17,c_spritex
  148.  move.w #17,c_spritey
  149.  bsr tee_kentta
  150.  bsr energia_mittari
  151.  bsr pallo_piirto
  152.  move.l intbase,a6 ;hävitetään hiiren pointteri näkyvistä
  153.  move.l cwindow,a0
  154.  move.l #pointer,a1
  155.  moveq #1,d0
  156.  moveq #1,d1
  157.  jsr _LVOSetPointer(a6)
  158.  
  159.  move.b #4,henget
  160.  move.b #0,lopetus
  161.  move.w #255,energia
  162.  move.b #0,kanto
  163.  move.w #0,jekut
  164.  move.b #0,kivet
  165.  move.b #0,hlaskuri
  166.  move.l #0,a0
  167.  move.l #sprite1,a1
  168.  move.w c_spritex,d0
  169.  move.w c_spritey,d1
  170.  move.l grbase,a6
  171.  jsr _LVOMoveSprite(a6)
  172.  
  173. ;************* PELI SILMUKKA **********
  174.  
  175. loop1
  176.  bsr spriteliikku_ohjaus
  177.  cmp.l #0,d0
  178.  beq no_click
  179. ei_lopeteta
  180.  bsr ota_esine
  181. no_click
  182.  tst.b lopetus
  183.  bne pelin_loppu
  184.  sub.b #1,txlaskuri
  185.  bsr jekku_ohjaus
  186.  bra loop1
  187.  
  188. ;**************
  189. pelin_loppu
  190.  move.l #0,a0
  191.  move.l grbase,a6
  192.  move.w #321,d0
  193.  move.l #sprite1,a1
  194.  jsr _LVOMoveSprite(a6)
  195.  
  196.  move.l #$7ffff,d0
  197. oloop
  198.  sub.l #1,d0
  199.  bne oloop
  200.  
  201.  sub.b #1,henget
  202.  beq no_lives
  203.  bsr pallo_poisto
  204.   lea maps,a0
  205.   move.l #mapslen,d1
  206.   move.l #2940,d6
  207.   move.l kenttac,d7
  208.   bsr Lataa
  209.  sub.b #1,nkentta
  210.  move.w a_spritex,c_spritex
  211.  move.w a_spritey,c_spritey
  212.  bsr uusi_kentta
  213.  move.b #0,lopetus
  214.   move.l #0,a0
  215.   move.l #sprite1,a1
  216.   move.w c_spritex,d0
  217.   move.w c_spritey,d1
  218.   move.l grbase,a6
  219.   jsr _LVOMoveSprite(a6)
  220.   move.b #0,c_suunta
  221.  bra loop1
  222. no_lives
  223.  move.l #$cffff,d0
  224. loppuloop
  225.  sub.l #1,d0
  226.  bne loppuloop
  227.  
  228.  bsr game_over_screen
  229.  tst.b d0
  230.  bne actual_game
  231.  
  232. ;********* Lopetetaan **************
  233.  
  234.  bsr do_voice_aaah
  235.  move.l #180000,d0
  236. loppu_test_loop1
  237.  subi.l #1,d0
  238.  bne loppu_test_loop1
  239.  move.l 4,a6
  240.  move.l aumsg,a1
  241.  jsr _LVOAbortIO(a6)
  242.  
  243. vapauta_spritet
  244.  lea numsprite,a5
  245.  movea.l grbase,a6
  246.  moveq #3,d7
  247. loop2
  248.  moveq #0,d0
  249.  move.b -1(a5,d7.w),d0
  250.  cmpi.b #-1,d0
  251.  beq.s loop3
  252.  jsr _LVOFreeSprite(a6)
  253. loop3
  254.  subq #1,d7
  255.  bne loop2
  256.  
  257. vapautukset
  258.  bsr free_audio
  259.  
  260.  bsr VapautaMuistit
  261.  
  262. close_gr
  263.  movea.l 4,a6
  264.  movea.l grbase,a1
  265.  jsr _LVOCloseLibrary(a6)
  266. close_dos
  267.  movea.l 4,a6
  268.  movea.l dosbase,a1
  269.  jsr _LVOCloseLibrary(a6)
  270. close_int
  271.  movea.l 4,a6
  272.  movea.l intbase,a1
  273.  jsr _LVOCloseLibrary(a6)
  274. abort
  275.  tst.l returnmsg
  276.  beq abort_2
  277.  movea.l 4,a6
  278.  movea.l returnmsg,a1
  279.  jsr _LVOReplyMsg(a6)
  280. abort_2
  281.  rts          ;**** Palataan CLI:hin ( tai WB:hen )
  282.  
  283. ;*************************
  284.  
  285. avaa_ruutu
  286.  movea.l #newscreen,a0  ;newscreen structure
  287.  movea.l intbase,a6
  288.  jsr _LVOOpenScreen(a6)
  289.  move.l d0,cscreen
  290.  beq.s ei_nayttoa ; ei ruutua
  291.  move.l d0,rport
  292.  add.l #84,rport
  293.  move.l d0,vport
  294.  add.l #44,vport
  295.  move.l #newwindow,a0  ;avataan myös ikkuna
  296.  move.l cscreen,nw_Screen(a0)
  297.  movea.l intbase,a6
  298.  jsr _LVOOpenWindow(a6)
  299.  move.l d0,cwindow
  300.  beq.s ei_nayttoa ; ei ruutua
  301. avaa_ruutu_pois
  302.  rts
  303.  
  304. ei_nayttoa
  305.   lea msg4,a1
  306.   move.l #msglen4,d3
  307.   bsr valitukset_ei_tiedosto
  308.   bsr GURU
  309.   moveq #0,d0
  310.   bra.s avaa_ruutu_pois
  311.  
  312. muuta_varit
  313.  movea.l grbase,a6
  314.  movea.l vport,a0
  315.  movea.l #colormap,a1
  316.  moveq #32,d0
  317.  jsr _LVOLoadRGB4(a6)        ; LoadRGB4;  muoto: $0RGB
  318.  rts
  319.  
  320. tee_spritet
  321.  lea numsprite,a5    ; sisältää kolmen spriten numerot
  322.  moveq #1,d0
  323.  lea sprite0,a0
  324.  bsr.s init_sprite
  325.  move.b d0,2(a5)
  326. ; cmpi.b #-1,d0
  327. ; beq.s ei_spriteja  ; itse asiassa tätä spriteä ei tarvita
  328.  
  329.  moveq #-1,d0
  330.  lea sprite1,a0
  331.  bsr.s init_sprite
  332.  move.b d0,(a5)
  333.  cmpi.b #-1,d0
  334.  beq.s ei_spriteja
  335.  
  336.  moveq #-1,d0
  337.  lea sprite2,a0
  338.  bsr.s init_sprite
  339.  move.b d0,1(a5)
  340.  cmpi.b #-1,d0
  341.  beq.s ei_spriteja
  342.  
  343.  moveq #-1,d0
  344.  
  345.  rts
  346.  
  347. ei_spriteja
  348.   lea msg8,a1
  349.   move.l #msglen8,d3
  350.   bsr valitukset_ei_tiedosto
  351.   bsr GURU
  352.   moveq #0,d0
  353.   rts
  354.  
  355. init_sprite
  356.  move.l grbase,a6
  357.  jsr _LVOGetSprite(a6)
  358.  rts
  359.  
  360. tee_kentta
  361.  move.w c_spritex,a_spritex
  362.  move.w c_spritey,a_spritey
  363. tee_kentta_b
  364.  ;ruudut (20*14) muuttujissa x ja y
  365.  move.l rport,a1  ;... mutta ensin siivotaan...
  366.  move.l grbase,a6
  367.  moveq #0,d0
  368.  jsr _LVOSetAPen(a6)
  369.  moveq #0,d0
  370.  moveq #0,d1
  371.  move.w #319,d2
  372.  move.w #224,d3
  373.  move.l rport,a1
  374.  jsr _LVORectFill(a6)
  375.  bsr etsi_kenttaos
  376.       ;nkenttaos on kentän osoite
  377.       ; - ainoa enää ulkoa tarvittava vakio
  378.  move.b #13,y
  379. loopy
  380.  move.b #19,x
  381. loopx
  382.  ; kenttien syvyys on 4 bittiä
  383.  ; haetaan menossa olevan ruudun arvo
  384.  moveq #0,d0
  385.  move.b y,d0
  386.  mulu #10,d0
  387.  moveq #0,d1
  388.  move.b x,d1
  389.  lsr.b #1,d1
  390.  add.w d1,d0
  391.  move.l nkenttaos,a0
  392.  move.b 0(a0,d0.w),d0
  393.  move.b d0,dloop
  394.  and.b #$f,d0
  395.  bsr draw_box
  396.  move.b dloop,d0
  397.  lsr.b #4,d0
  398.  subi.b #1,x
  399.  bsr draw_box
  400.  cmp.b #0,x
  401.  beq.s looppo
  402.  subi.b #1,x
  403.  bra loopx
  404. looppo
  405.  subi.b #1,y
  406.  cmp.b #-1,y
  407.  bne loopy
  408.  rts
  409.  
  410. draw_box
  411.  move.l rport,a0
  412.  move.l intbase,a6
  413.  moveq #0,d2
  414.  move.b d0,d2
  415.  moveq #0,d1
  416.  move.b y,d1
  417.  lsl.w #4,d1
  418.  moveq #0,d0
  419.  move.b x,d0
  420.  lsl.w #4,d0
  421.  cmp.b #0,d2
  422.  beq draw_pois
  423.  move.l #box_images,a1
  424.  lsl.w #2,d2
  425.  move.l -4(a1,d2),a1
  426.  jsr _LVODrawImage(a6)
  427. draw_pois
  428.  rts
  429.  
  430. ;**********************
  431. hextodec               ; muutettava luku d1:ssä
  432.  move.l d1,d2          ; vain kaksinumeroinen, 0-99
  433.  divu #10,d1
  434.  andi.l #$f,d1
  435.  move.l d1,d3
  436.  lsl.w #4,d3   ; d3:ssa BCD luku , kymmenet
  437.  mulu #10,d1
  438.  sub.b d1,d2   ; d2:ssa BCD luku , ykköset
  439.  move #4,CCR   ; Extended bit = 0, Zero bit =1
  440.  abcd d3,d2    ; BCD yhteenlasku
  441. modify                 ;muutettava luku d2:ssa
  442.  move.l #string,addr
  443.  move.l #string,a5     ;merkkijonon osoite, joho luku tulee
  444.  moveq #8,d1
  445. loopnum
  446.  move.l d2,d0
  447.  lsr.l #4,d2
  448.  bsr muuta
  449.  move.b d0,-1(a5,d1.l)
  450.  subi.b #1,d1
  451.  bne loopnum
  452.  rts
  453. muuta                  ;muutettava luku d0:ssa
  454.  and.b #$f,d0
  455.  or.b #$30,d0
  456.  cmp.b #$3a,d0
  457.  blt poisnum
  458.  add.b #7,d0
  459. poisnum
  460.  rts
  461. type
  462.  move.l grbase,a6
  463.  move.l rport,a1
  464.  move.b #9,d0
  465.  jsr _LVOSetAPen(a6)
  466.  move.l rport,a1
  467.  move.l addr,a0
  468.  move.l lenght,d0
  469.  jsr _LVOText(a6)
  470.  rts
  471.  
  472. kirjoita_happo
  473.  move.l d0,-(sp)
  474.  moveq #0,d1
  475.  move.b hlaskuri,d1
  476.  bsr hextodec
  477.  add.l #6,a5
  478.  move.l a5,a0
  479.  moveq #2,d7
  480.  moveq #16,d0
  481.  move.w #236,d1
  482.  moveq #9,d6
  483.  bsr kirjoita
  484.  move.l (sp)+,d0
  485.  rts
  486.  
  487. kirjoita_taso
  488.  move.l d0,-(sp)
  489.  moveq #0,d1
  490.  move.b nkentta,d1
  491.  addq #1,d1
  492.  bsr hextodec
  493.  add.l #6,a5
  494.  move.l a5,a0
  495.  moveq #2,d7
  496.  move.w #252,d0
  497.  move.w #244,d1
  498.  moveq #9,d6
  499.  bsr kirjoita
  500.  move.l (sp)+,d0
  501.  rts
  502.  
  503. report_mouse
  504.  moveq #0,d7
  505.  bsr intuimessage
  506.  tst.l d0
  507.  beq report_mouse_pois ; ei viestejä
  508.  move.b #0,suunta
  509.  move.w d7,d3
  510.  swap d7
  511.  move.w d7,d2
  512.  move.b d3,d0
  513.  bsr abs_muunnos
  514.  move.b d0,d1
  515.  move.b d2,d0
  516.  bsr abs_muunnos
  517.  move.b #1,suunta
  518.  cmp.b d1,d0
  519.  bgt.s report_a
  520.  move.b #2,suunta
  521.  move.b d1,d0
  522.  move.b d3,d2
  523. report_a
  524.  cmp.b #2,d0
  525.  bgt.s report_b
  526.  move.b #0,suunta
  527.  bra.s report_c
  528. report_b
  529.  and.b #$80,d2
  530.  or.b d2,suunta
  531. report_c
  532.  moveq #3,d0
  533.  cmp.l #RAWKEY,d5
  534.  beq report_keys
  535.  cmp.l #MOUSEBUTTONS,d5
  536.  bne.s report_mouse_pois2
  537.  cmp.w #$c000,d6
  538.  beq.s report_mouse_pois
  539.  moveq #0,d0
  540.  cmp.w #$a000,d6
  541.  bne.s report_mouse_pois
  542.  bsr ota_kr
  543. report_mouse_pois2
  544.  moveq #0,d0
  545. report_mouse_pois
  546.  rts
  547.  
  548. intuimessage
  549.  move.l cwindow,a0
  550.  move.l $56(a0),a0
  551.  movea.l 4,a6
  552.  jsr _LVOGetMsg(a6)
  553.  tst.l d0
  554.  beq.s intuimessage_pois
  555.  move.l d0,a1
  556.  move.l im_MouseX(a1),d7
  557.  move.w im_Qualifier(a1),d6
  558.  move.l im_Class(a1),d5
  559.  move.w im_Code(a1),d4
  560.  jsr _LVOReplyMsg(a6) ;d0:ssa on 0, jos viestejä ei ole saapunut
  561.  moveq #-1,d0
  562. intuimessage_pois
  563.  rts
  564.  
  565. passed
  566.  lea msg13,a0
  567.  move.w #msglen13,d7
  568.  moveq #16,d0
  569.  moveq #124,d1
  570.  moveq #9,d6
  571.  bsr kirjoita
  572.  rts
  573.  
  574. report_keys
  575.  ; d4:ssa näppäimen numero
  576.  moveq #0,d0
  577.  cmp.w #$45,d4
  578.  beq report_esc
  579.  cmp.w #$58,d4
  580.  beq report_sanct
  581.  cmp.w #$2e,d4
  582.  beq report_acid
  583.  cmp.w #$5f,d4
  584.  beq report_info
  585.  cmp.w #$19,d4
  586.  beq report_pause
  587.  rts
  588. report_esc
  589.  move.b #-1,lopetus
  590.  move.b #1,henget
  591.  rts
  592. report_sanct
  593.  
  594.  cmp.b #$9a,d6   ; RSHIFT+CONTROL+LALT+RCOMMAND
  595.  bne report_sanct_pois
  596.  move.b #4,henget
  597.  bsr pallo_piirto
  598.  moveq #0,d0
  599. report_sanct_pois 
  600.  rts
  601. report_acid
  602.  cmp.b #$e1,d6   ; LSHIFT+RALT+LCOMMAND+RCOMMAND
  603.  bne report_acid_pois
  604.  move.b #90,hlaskuri
  605.   moveq #0,d0
  606.   move.w #224,d1
  607.   move.l #happo_i,a1
  608.   bsr piirra_image
  609.   bsr kirjoita_happo
  610.  
  611.  bset.b #0,kanto
  612.   moveq #16,d0
  613.   move.w #240,d1
  614.   move.l #kranaatti_i,a1
  615.   bsr piirra_image
  616.  
  617.  bset.b #2,kanto
  618.   moveq #0,d0
  619.   move.w #240,d1
  620.   move.l #myrkky_i,a1
  621.   bsr piirra_image
  622.  
  623.  moveq #0,d0
  624. report_acid_pois
  625.  rts
  626. report_info
  627.  movem d1-d7/a0-a6,-(sp)
  628.  bsr game_info_screen
  629.  bsr info_clear
  630.  movem (sp)+,d1-d7/a0-a6
  631.  moveq #0,d0
  632.  rts
  633. report_pause
  634.  movea.l rport,a1
  635.  movea.l grbase,a6
  636.  moveq #0,d0
  637.  jsr _LVOSetAPen(a6)
  638.  movea.l rport,a1
  639.  movea.l grbase,a6
  640.  moveq #100,d0
  641.  move.w #246,d1
  642.  move.w #319,d2
  643.  move.w #255,d3
  644.  jsr _LVORectFill(a6)
  645.  lea msg11,a0
  646.  move.w #msglen11,d7
  647.  moveq #116,d0
  648.  move.l #254,d1
  649.  moveq #13,d6
  650.  bsr kirjoita
  651. report_pause_loop
  652.  bsr intuimessage
  653.  tst.l d0
  654.  beq report_pause_loop
  655.  cmp.l #RAWKEY,d5
  656.  bne report_pause_loop
  657.  cmp.b #$19,d4
  658.  bne report_pause_loop
  659.  ; puhdistetaan jäljet
  660.  movea.l rport,a1
  661.  movea.l grbase,a6
  662.  lea msg10,a0
  663.  moveq #msglen10,d7
  664.  moveq #100,d0
  665.  move.l #254,d1
  666.  moveq #14,d6
  667.  bsr kirjoita
  668.  rts
  669.  
  670. etsi_kenttaos
  671.  move.l #kentat,a0 ;kentat os. kenttien osoitteiden alkuun
  672.  moveq #0,d0
  673.  move.b nkentta,d0
  674.  lsl.b #2,d0
  675.  move.l 0(a0,d0.w),nkenttaos
  676.  rts
  677.  
  678. etsi_ruutu
  679.  ;etsittävän ruudun koordinaatit muuttujissa x ja y
  680.  ;kentän osoite valmiina vakiossa nkenttaos
  681.  move.l nkenttaos,a0
  682.  moveq #0,d1
  683.  move.b y,d1
  684.  mulu #10,d1
  685.  moveq #0,d0
  686.  move.b x,d0
  687.  lsr.b #1,d0
  688.  add.w d1,d0 ;ruudun tavun offset-arvo d0:ssa
  689.  move.b 0(a0,d0.w),d0 ;d0:ssa on ruudun tavu
  690.  move.b x,d1
  691.  and.b #1,d1
  692.  cmp.b #1,d1
  693.  beq.s etsi_ruutu_pois
  694.  lsr.b #4,d0  ;parilliselle x:arvolle 4 ylintä bittiä
  695. etsi_ruutu_pois
  696.  and.b #$f,d0 ;lopullinen arvo on d0:ssa
  697. ; cmp.b #15,d0
  698. ; bne etsi_ruutu_pois2
  699. ; move.b #1,d0
  700. etsi_ruutu_pois2
  701.  rts
  702.  
  703. spriteliikku_ohjaus
  704.  moveq #0,d0
  705.  sub.w #1,solaskuri  ;määrätään, kuinka usein spriteä liikutetaan
  706.  and.w #$7f,solaskuri
  707.  bne spriteliikku_pois2
  708.  bsr jekku_testit
  709.  bsr report_mouse
  710.  tst.l d0
  711.  bne spriteliikku_pois2
  712. spriteliikku
  713.  bsr energy_loss
  714.  bsr gaboom
  715.  cmp.b #0,suunta
  716.  beq.s spriteliikku_pois
  717.  move.b suunta,c_suunta
  718.  move.b #9,v_sprite
  719. spriteliikku_pois
  720.  tst.b c_suunta
  721.  beq spriteliikku_b
  722.  move.w c_spritex,d0
  723.  move.w c_spritey,d1
  724.  move.b c_suunta,sprite_suunta
  725.  bsr suunta_lupa
  726.  move.l #0,a0
  727.  move.l #sprite1,a1
  728.  move.w c_spritex,d0
  729.  move.w c_spritey,d1
  730.  move.l grbase,a6
  731.  jsr _LVOMoveSprite(a6)
  732.   bsr sprite_paikka
  733.   bsr etsi_ruutu
  734.   cmp.b #3,d0
  735.   bne.s spriteliikku_a
  736.  cmp.b #5,kivet
  737.  bne.s spriteliikku_b
  738.  bsr uusi_kentta
  739. spriteliikku_a
  740.  cmp.b #5,d0
  741.  bne.s spriteliikku_b
  742.  bsr kallot
  743. spriteliikku_b                              
  744.  clr.l d0
  745. spriteliikku_pois2
  746.  rts
  747.  
  748. sprite_paikka
  749.  move.w c_spritex,d0
  750.  add.w #7,d0
  751.  lsr.w #4,d0
  752.  move.b d0,x
  753.  move.w c_spritey,d0
  754.  add.w #7,d0
  755.  lsr.w #4,d0
  756.  move.b d0,y
  757.  rts
  758.  
  759. suunta_ruudut
  760.  ;ruudut paikoissa x,y ja xm,ym
  761.  ;move.w c_spritex,d0
  762.  ;move.w c_spritey,d1
  763.  move.w d0,d2
  764.  move.w d1,d3
  765.  cmp.b #1,sprite_suunta
  766.  bne.s suuntar_a
  767.   ;suunta oikealle
  768.   add.w #15,d0
  769.   add.w #1,d1
  770.   add.w #15,d2
  771.   add.w #14,d3
  772.   rts
  773. suuntar_a
  774.  cmp.b #$81,sprite_suunta
  775.  bne.s suuntar_b
  776.   ;suunta vasemmalle
  777.   add.w #1,d1
  778.   add.w #14,d3
  779.   rts
  780. suuntar_b
  781.  cmp.b #2,sprite_suunta
  782.  bne.s suuntar_c
  783.   ;suunta alas
  784.   add.w #15,d1
  785.   add.w #14,d2
  786.   add.w #15,d3
  787.   add.w #1,d0
  788.   rts
  789. suuntar_c
  790.   ;suunta ylös
  791.   add.w #1,d0
  792.   add.w #14,d2
  793.   rts
  794.  
  795. suunta_xy
  796.  bsr suunta_ruudut
  797.  lsr.w #4,d0
  798.  move.b d0,x
  799.  lsr.w #4,d1
  800.  move.b d1,y
  801.  lsr.w #4,d2
  802.  move.b d2,xm
  803.  lsr.w #4,d3
  804.  move.b d3,ym
  805.  bsr etsi_ruutu
  806.  rts
  807.  
  808. suunta_lupa
  809.  bsr suunta_xy
  810.   bsr pompotus
  811.  cmp.b #1,d0
  812.  beq.s suunta_loppu
  813.  move.b xm,x
  814.  move.b ym,y
  815.  bsr etsi_ruutu
  816.   bsr pompotus
  817.  cmp.b #1,d0
  818.  beq.s suunta_loppu
  819.  move.w c_spritex,d1
  820.  move.w c_spritey,d2
  821.  move.b c_suunta,d0
  822.  bsr vars_sliikku
  823.  move.w d1,c_spritex
  824.  move.w d2,c_spritey
  825. suunta_loppu
  826.  bsr spritehidastuvuus
  827.  rts
  828.  
  829. pompotus
  830.   cmp.b #$a,d0
  831.   bne.s pompotus_loppu
  832.   bsr do_voice_boing
  833.   bchg.b #7,suunta
  834.   move.b c_suunta,d1
  835.   andi.b #$7f,d1
  836.   andi.b #$80,suunta
  837.   add.b d1,suunta
  838.   move.b #$c,v_sprite
  839.   move.b #1,d0
  840. pompotus_loppu
  841.   rts
  842.  
  843. vars_sliikku
  844.  sub.b #1,nlaskuri   ;vähennetään nopeuslaskuria
  845.  bne.s vars_sloppu         ;ellei nollautunut, mennään y:hyn
  846.  bsr spriten_liike
  847.  move.b v_sprite,d0
  848.  move.b #$b,nlaskuri
  849.  sub.b d0,nlaskuri
  850. vars_sloppu
  851.  rts
  852.  
  853. spriten_liike
  854.  ;suunta d0:ssa, x-paikka d1:ssä, y-paikka d2:ssä
  855.  move.w #-1,d4
  856.  btst #7,d0
  857.  bne spriten_x
  858.  move.w #1,d4
  859. spriten_x
  860.  btst #0,d0
  861.  beq spriten_y
  862.  add.w d4,d1
  863.  rts
  864. spriten_y
  865.  add.w d4,d2
  866.  rts
  867.  
  868. spritehidastuvuus
  869.  bsr sprite_paikka ;nopeuden pudotus 'suossa'
  870.  bsr etsi_ruutu
  871.  cmp.b #2,d0
  872.  bne.s spriteh_a
  873.  and.b #3,v_sprite
  874. spriteh_a
  875.  sub.b #1,vhlaskuri ;määritellään spriten automaattinen hidastuvuus
  876.  and.b #$3f,vhlaskuri
  877.  bne spriteh_loppu
  878.  
  879.  tst.b v_sprite
  880.  beq.s spriteh_stop
  881.  sub.b #1,v_sprite
  882.  rts
  883. spriteh_stop
  884.  move.b #0,c_suunta
  885. spriteh_loppu
  886.  rts
  887.  
  888. uusi_kentta
  889.  add.b #1,nkentta
  890.  bsr kirjoita_taso
  891.  bsr tee_kentta
  892.  cmp.b #$14,nkentta
  893.  bne uusi_kentta_2
  894.  bsr passed
  895. uusi_kentta_2
  896.  move.b #0,kivet
  897.  move.b #0,kanto
  898.  move.b #0,hlaskuri
  899.  bsr esine_poisto
  900.  move.w #255,energia
  901.  bsr energia_mittari
  902.  move.w #0,jekut
  903.  move.w #321,d0
  904.  move.l #0,a0
  905.  move.l #sprite2,a1
  906.  move.l grbase,a6
  907.  jsr _LVOMoveSprite(a6)
  908.  rts
  909.  
  910. ota_esine
  911.  move.b #0,v_sprite ; pysäytetään sprite
  912.  bsr sprite_paikka
  913.  bsr etsi_ruutu
  914.   cmp.b #3,d0
  915.   bls ei_esinetta
  916.   cmp.b #5,d0
  917.   beq ei_esinetta
  918.   cmp.b #8,d0
  919.   beq ei_esinetta
  920.   move.l d0,-(sp)
  921.   bsr do_voice_bell
  922.   bsr pyyhi_ruutu
  923.   move.l (sp)+,d0
  924.  cmp.b #4,d0
  925.  bne.s ota_pullo
  926.  add.b #1,kivet
  927.  rts
  928. ota_pullo
  929.  cmp.b #6,d0
  930.  bne.s ota_kranaatti
  931.  addi.w #127,energia
  932.  cmp.w #$ff,energia
  933.  bls.s ota_pallo_a
  934.  move.w #$ff,energia
  935. ota_pallo_a
  936.  bsr energia_mittari
  937.  rts
  938. ota_kranaatti
  939.  cmp.b #7,d0
  940.  bne.s ota_myrkky
  941.  btst.b #0,kanto
  942.  bne.s ota_myrkky
  943.  bset.b #0,kanto
  944.   moveq #16,d0
  945.   move.w #240,d1
  946.   move.l #kranaatti_i,a1
  947.   bsr piirra_image
  948.  rts
  949. ota_myrkky
  950.  cmp.b #9,d0
  951.  bne.s ota_happo
  952.  bset.b #2,kanto
  953.   moveq #0,d0
  954.   move.w #240,d1
  955.   move.l #myrkky_i,a1
  956.   bsr piirra_image
  957.  rts
  958. ota_happo
  959.  cmp.b #$b,d0
  960.  bne.s ota_pois
  961.  addi.b #4,hlaskuri
  962.   moveq #0,d0
  963.   move.w #224,d1
  964.   move.l #happo_i,a1
  965.   bsr piirra_image
  966.   bsr kirjoita_happo
  967.  rts
  968. ota_pois
  969.  rts
  970.  
  971. piirra_image
  972.  movea.l rport,a0
  973.  movea.l intbase,a6
  974.  jsr _LVODrawImage(a6)
  975.  rts
  976.  
  977. ei_esinetta
  978.  bsr do_voice_hit
  979.  rts
  980.  
  981. ota_kr
  982.  bsr sprite_paikka
  983.  btst.b #0,kanto
  984.  beq.s ota_kr_pois
  985.   moveq #0,d0
  986.   move.l rport,a1
  987.   move.l grbase,a6
  988.   jsr _LVOSetAPen(a6)
  989.   moveq #16,d0
  990.   move.w #240,d1
  991.   moveq #31,d2
  992.   move.w #255,d3
  993.   move.l rport,a1
  994.   move.l grbase,a6
  995.   jsr _LVORectFill(a6)
  996.  bclr.b #0,kanto
  997.  bset.b #1,kanto
  998.  move.b x,kpaikkax
  999.  move.b y,kpaikkay
  1000.  moveq #7,d0
  1001.  bsr draw_box
  1002. ota_kr_pois
  1003.  rts
  1004.  
  1005. pyyhi_ruutu
  1006.  move.l grbase,a6
  1007.  move.l rport,a1
  1008.  moveq #0,d0
  1009.  jsr _LVOSetAPen(a6)
  1010.  moveq #0,d0  ; nollataan ensin rekisteri, koska x tyyppiä byte
  1011.  moveq #0,d1  ; nollataan ensin rekisteri, koska y tyyppiä byte
  1012.  move.b x,d0
  1013.  move.b y,d1
  1014.  lsl.w #4,d0
  1015.  lsl.w #4,d1
  1016.  move.w d0,d2
  1017.  add.w #15,d2
  1018.  move.w d1,d3
  1019.  add.w #15,d3
  1020.  move.l rport,a1
  1021.  jsr _LVORectFill(a6)
  1022.  bsr nollaa_taulukko
  1023.  rts
  1024. nollaa_taulukko
  1025.  bsr etsi_kenttaos
  1026.  move.l nkenttaos,a0
  1027.  moveq.l #0,d0
  1028.  move.b x,d0
  1029.  lsr.b #1,d0
  1030.  moveq.l #0,d1
  1031.  move.b y,d1
  1032.  mulu #10,d1
  1033.  add.b d1,d0
  1034.  btst.b #0,x
  1035.  beq.s nollaa_p
  1036.  and.b #$f0,0(a0,d0.w)
  1037.  bra nollaa_pois
  1038. nollaa_p
  1039.  and.b #$f,0(a0,d0.w)
  1040. nollaa_pois
  1041.  rts
  1042.  
  1043. energia_mittari
  1044.  ;piirretään muuttujassa energia oleva luku palkkina
  1045.  movea.l rport,a1
  1046.  moveq #12,d0
  1047.  move.l grbase,a6
  1048.  jsr _LVOSetAPen(a6)
  1049.  move.l rport,a1
  1050.  moveq #40,d0
  1051.  move.w #226,d1
  1052.  jsr _LVOMove(a6)
  1053.  move.l rport,a1
  1054.  moveq #4,d0
  1055.  move.l #epoints,a0
  1056.  jsr _LVOPolyDraw(a6)
  1057.   moveq #0,d0
  1058.   move.l rport,a1
  1059.   jsr _LVOSetAPen(a6)
  1060.   moveq #41,d0
  1061.   move.w #227,d1
  1062.   move.w #296,d2
  1063.   move.w #233,d3
  1064.   move.l rport,a1
  1065.   jsr _LVORectFill(a6)
  1066.  moveq #1,d0
  1067.  move.l rport,a1
  1068.  jsr _LVOSetAPen(a6)
  1069.  moveq #41,d0
  1070.  move.w #227,d1
  1071.  move.w d0,d2
  1072.  move.w #233,d3
  1073.  add.w energia,d2
  1074.  move.l rport,a1
  1075.  jsr _LVORectFill(a6)
  1076.  move.l rport,a1
  1077.  moveq #0,d0
  1078.  jsr _LVOSetAPen(a6)
  1079.  rts
  1080.  
  1081. kallot
  1082.  move.b #0,v_sprite
  1083.  move.b #0,suunta
  1084.  sub.b #1,elaskuri
  1085.  and.b #$f,elaskuri
  1086.  bne.s kallot_pois
  1087.  tst.b hlaskuri
  1088.  bne happo_laskut
  1089.  lsr.w energia
  1090.  lsr.w energia
  1091.  bsr do_voice_aaah
  1092.  bsr energia_mittari
  1093.  move.l intbase,a6
  1094.  move.l cscreen,a0
  1095.  jsr _LVODisplayBeep(a6)
  1096. kallot_pois
  1097.  rts
  1098. happo_laskut
  1099.  subi.b #1,hlaskuri
  1100.  bsr kirjoita_happo
  1101.  bsr do_voice_chiump
  1102.  rts
  1103.  
  1104. energy_loss
  1105.  tst.w energia
  1106.  beq.s energy_loppu
  1107.  sub.w #1,evlaskuri
  1108.  and.w #$1ff,evlaskuri
  1109.  bne kallot_pois
  1110.  sub.w #1,energia
  1111.  bsr energia_mittari
  1112.  rts
  1113. energy_loppu
  1114.  move.b #1,lopetus
  1115.  rts
  1116.  
  1117. gaboom
  1118.  btst.b #1,kanto
  1119.  beq gaboom_loppu
  1120.  sub.b #1,klaskuri
  1121.  and.b #$7f,klaskuri
  1122.  bne gaboom_loppu
  1123.  bsr do_voice_buum
  1124.  move.l rport,a1
  1125.  move.b #0,d0
  1126.  move.l grbase,a6
  1127.  jsr _LVOSetAPen(a6)
  1128.  move.b kpaikkax,x
  1129.  move.b kpaikkay,y
  1130.  bsr pyyhi_ruutu
  1131.  add.b #1,x
  1132.  bsr pyyhi_ruutu
  1133.  sub.b #2,x
  1134.  bsr pyyhi_ruutu
  1135.  add.b #1,x
  1136.  add.b #1,y
  1137.  bsr pyyhi_ruutu
  1138.  sub.b #2,y
  1139.  bsr pyyhi_ruutu
  1140.  bclr.b #1,kanto
  1141. gaboom_loppu
  1142.  rts
  1143.  
  1144. j1_kohtaaminen
  1145.  btst #0,jekut
  1146.  beq j1_kohtaaminen_loppu
  1147.  bsr sprite_paikka
  1148.  move.w j1_spritex,d0
  1149.  add.w #7,d0
  1150.  lsr.w #4,d0
  1151.  cmp.b x,d0
  1152.  bne j1_kohtaaminen_loppu
  1153.  move.w j1_spritey,d0
  1154.  add.w #7,d0
  1155.  lsr.w #4,d0
  1156.  cmp.b y,d0
  1157.  bne j1_kohtaaminen_loppu
  1158.  move.b #0,v_sprite
  1159.  btst.b #2,kanto
  1160.  beq.s j1_koht_jatko
  1161.   moveq #0,d0
  1162.   move.l rport,a1
  1163.   move.l grbase,a6
  1164.   jsr _LVOSetAPen(a6)
  1165.   moveq #0,d0
  1166.   move.w #240,d1
  1167.   moveq #15,d2
  1168.   move.w #255,d3
  1169.   move.l rport,a1
  1170.   move.l grbase,a6
  1171.   jsr _LVORectFill(a6)
  1172.  bsr do_voice_chiump
  1173.  bclr.b #2,kanto
  1174.  bclr #0,jekut
  1175.  move.l #0,a0
  1176.  move.l #sprite2,a1
  1177.  move.w #321,d0
  1178.  move.l grbase,a6
  1179.  jsr _LVOMoveSprite(a6)
  1180.  rts
  1181. j1_koht_jatko
  1182.  sub.b #1,elaskuri
  1183.  and.b #$f,elaskuri
  1184.  bne.s j1_kohtaaminen_loppu
  1185.  lsr.w energia
  1186.  bsr do_voice_aaah
  1187.  bsr energia_mittari
  1188.  move.l intbase,a6
  1189.  move.l cscreen,a0
  1190.  jsr _LVODisplayBeep(a6)
  1191. j1_kohtaaminen_loppu
  1192.  rts
  1193.  
  1194. j1_suunta_lupa
  1195.  move.w j1_spritex,d0
  1196.  move.w j1_spritey,d1
  1197.  bsr suunta_xy
  1198.  cmp.b #1,d0
  1199.  beq.s j1_suunta_lloppu
  1200.  cmp.b #5,d0
  1201.  beq.s j1_suunta_lloppu
  1202.  cmp.b #8,d0
  1203.  beq.s j1_suunta_lloppu
  1204.  cmp.b #10,d0
  1205.  beq.s j1_suunta_lloppu
  1206.  move.b xm,x
  1207.  move.b ym,y
  1208.  bsr etsi_ruutu
  1209.  cmp.b #1,d0
  1210.  beq.s j1_suunta_lloppu
  1211.  cmp.b #5,d0
  1212.  beq.s j1_suunta_lloppu
  1213.  cmp.b #8,d0
  1214.  beq.s j1_suunta_lloppu
  1215.  cmp.b #10,d0
  1216.  beq.s j1_suunta_lloppu
  1217.  clr.l d0
  1218. j1_suunta_lloppu
  1219.  rts
  1220. jekku_testit
  1221.  btst #0,jekut
  1222.  bne.s jekku_loppu
  1223.  sub.w #1,j1laskuri
  1224.  and.w #$3ff,j1laskuri
  1225.  bne.s jekku_loppu
  1226.  bset #0,jekut
  1227.  move.l #j1_koord,a0
  1228.  moveq #0,d0
  1229.  move.b nkentta,d0
  1230.  lsl.w #2,d0
  1231.  move.w 0(a0,d0.w),d1
  1232.  move.w 2(a0,d0.w),d0
  1233.  move.w d1,j1_spritex
  1234.  move.w d0,j1_spritey
  1235. jekku_loppu
  1236.  rts
  1237.  
  1238. jekku_ohjaus
  1239.  sub.w #1,jekkulaskuri
  1240.  and.w #$1ff,jekkulaskuri
  1241.  bne jekku_loppu
  1242.  bsr j1_kohtaaminen
  1243.  btst #0,jekut
  1244.  beq jekku_loppu
  1245.  bsr jekku1
  1246.  rts
  1247.  
  1248. jekku1
  1249.  sub.w #1,animlaskuri  ; animlaskuri määrää, kuinka usein haukotellaan
  1250.  and.w #$ff,animlaskuri
  1251.  bne jekku1_apois1
  1252.  move.b #-1,frames     ; asetetaan animaatio päälle
  1253.  move.b #0,frame       ; frame antaa imagen numeron
  1254.  move.w #2,framelaskuri ; määrätään haukotuksen nopeus
  1255.  bsr do_voice_roar
  1256. jekku1_apois1
  1257.  cmp.b #0,frames
  1258.  beq jekku1_apois2
  1259.  bsr jekku_animaatio
  1260. jekku1_apois2
  1261.  bsr j1_suunta_valinta
  1262.  move.b sprite_suunta,d0
  1263.  tst.b d0
  1264.  beq.s jekku1_loppu
  1265.  move.w j1_spritex,d1
  1266.  move.w j1_spritey,d2
  1267.  bsr spriten_liike
  1268.  move.w d1,j1_spritex
  1269.  move.w d2,j1_spritey
  1270.  move.w d1,d0
  1271.  move.w d2,d1
  1272.  move.l #0,a0
  1273.  move.l grbase,a6
  1274.  move.l #sprite2,a1
  1275.  jsr _LVOMoveSprite(a6)
  1276. jekku1_loppu
  1277.  rts
  1278.  
  1279. jekku_animaatio
  1280.  subq.w #1,framelaskuri  ; framelaskuri määrää, kuinka kauan framea näytetään
  1281.  bne jekku_animaatio_pois
  1282.  move.w #2,framelaskuri ; määrätään haukotuksen nopeus
  1283.  moveq #0,d0
  1284.  move.b frame,d0
  1285.  lea spritedata2,a2
  1286.  move.l 0(a2,d0.w),a2 ; haettiin spritedatan osoite
  1287.  cmp.l #0,a2
  1288.  beq jekku_animaatio_stop ; viimeinen frame on jo piirretty
  1289.  move.l #0,a0
  1290.  move.l #sprite2,a1
  1291.  move.l grbase,a6
  1292.  jsr _LVOChangeSprite(a6)
  1293.  add.b #4,frame
  1294. jekku_animaatio_pois
  1295.  rts
  1296. jekku_animaatio_stop
  1297.  move.b #0,frames
  1298.  rts
  1299.  
  1300. j_c_sprite_erotus
  1301.  move.w c_spritey,d0
  1302.  sub.w j1_spritey,d0
  1303.  bsr abs_wmuunnos
  1304.  move.w d0,d1
  1305.  move.w c_spritex,d0
  1306.  sub.w j1_spritex,d0
  1307.  bsr abs_wmuunnos
  1308.  rts
  1309. j1_suunta_valinta
  1310.  bsr j_c_sprite_erotus
  1311.  cmp.w d0,d1
  1312.  bls.s j1_suunta_py
  1313.  move.b #$81,sprite_suunta
  1314.  move.w c_spritex,d0
  1315.  cmp.w j1_spritex,d0
  1316.  beq.s j1_suunta_py
  1317.  bls.s j1_suunta_a
  1318.  move.b #1,sprite_suunta
  1319. j1_suunta_a
  1320.  bsr j1_suunta_lupa
  1321.  tst.w d0
  1322.  bne.s j1_suunta_py
  1323.  rts
  1324. j1_suunta_py
  1325.  move.w c_spritey,d1
  1326.  move.b #$82,sprite_suunta
  1327.  cmp.w j1_spritey,d1
  1328.  beq.s j1_suunta_va
  1329.  bls.s j1_suunta_b
  1330.  move.b #2,sprite_suunta
  1331. j1_suunta_b
  1332.  bsr j1_suunta_lupa
  1333.  tst.w d0
  1334.  bne.s j1_suunta_va
  1335. j1_suunta_pois
  1336.  rts
  1337. j1_suunta_va
  1338.  move.w c_spritex,d0
  1339.  move.b #$81,sprite_suunta
  1340.  cmp.w j1_spritex,d0
  1341.  beq.s j1_suunta_d
  1342.  bls.s j1_suunta_c
  1343.  move.b #1,sprite_suunta
  1344. j1_suunta_c
  1345.  bsr j1_suunta_lupa
  1346.  tst.w d0
  1347.  beq j1_suunta_pois
  1348. j1_suunta_d
  1349.  move.b #0,sprite_suunta
  1350.  rts
  1351.  
  1352. abs_muunnos
  1353.  ;otetaan itseisarvo d0:sta
  1354.  tst.b d0
  1355.  bmi.s abs_m
  1356.  bra.s abs_p
  1357. abs_m
  1358.  neg.b d0
  1359. abs_p
  1360.  rts
  1361.  
  1362. abs_wmuunnos
  1363.  ;otetaan itseisarvo d0:sta
  1364.  tst.w d0
  1365.  bmi.s abs_wm
  1366.  bra.s abs_wp
  1367. abs_wm
  1368.  neg.w d0
  1369. abs_wp
  1370.  rts
  1371.  
  1372. pallo_poisto
  1373.  move.l rport,a1
  1374.  move.b #0,d0
  1375.  move.l grbase,a6
  1376.  jsr _LVOSetAPen(a6)
  1377.  moveq #0,d0
  1378.  move.b henget,d0
  1379.  mulu #18,d0
  1380.  add.b #28,d0
  1381.  move.w #240,d1
  1382.  move.w d0,d2
  1383.  add.w #16,d2
  1384.  move.w #255,d3
  1385.  move.l rport,a1
  1386.  jsr _LVORectFill(a6)
  1387.  rts
  1388.  
  1389. pallo_piirto
  1390.  move.b #46,x
  1391. pploop
  1392.  moveq #0,d0
  1393.  move.b x,d0
  1394.  move.w #240,d1
  1395.  move.l #pallo_i,a1
  1396.  bsr piirra_image
  1397.  add.b #18,x
  1398.  cmp.b #100,x
  1399.  blt pploop
  1400.  bsr esine_poisto
  1401.  rts
  1402.  
  1403. esine_poisto
  1404.  move.l rport,a1
  1405.  move.l grbase,a6
  1406.  moveq #0,d0
  1407.  jsr _LVOSetAPen(a6)
  1408.  move.l rport,a1
  1409.  move.l grbase,a6
  1410.  moveq #0,d0
  1411.  move.w #224,d1
  1412.  moveq #31,d2
  1413.  move.w #255,d3
  1414.  jsr _LVORectFill(a6)
  1415.  rts
  1416.  
  1417. game_over_screen
  1418.   move.l intbase,a6 ;hiiren pointteri näkyviin
  1419.   move.l cwindow,a0
  1420.   move.l #pointer2,a1
  1421.   moveq #16,d0
  1422.   moveq #16,d1
  1423.   moveq #0,d2
  1424.   moveq #0,d3
  1425.   jsr _LVOSetPointer(a6)
  1426.   move.l #0,a0
  1427.   move.l grbase,a6
  1428.   move.w #321,d0
  1429.   move.l #sprite2,a1
  1430.   jsr _LVOMoveSprite(a6)
  1431.  move.l grbase,a6
  1432.  move.l rport,a1
  1433.  moveq #0,d0
  1434.  jsr _LVOSetAPen(a6)
  1435.  move.l rport,a1
  1436.  moveq #0,d0
  1437.  moveq #0,d1
  1438.  move.w #319,d2
  1439.  move.w #255,d3
  1440.  jsr _LVORectFill(a6)
  1441.  move.l rport,a1
  1442.  moveq #9,d0
  1443.  jsr _LVOSetAPen(a6)
  1444.  move.l #msg1,a0
  1445.  move.w #27,d7
  1446.  move.w #52,d0
  1447.  move.w #80,d1
  1448.  moveq #9,d6
  1449.  bsr kirjoita
  1450.  move.l #msg2,a0
  1451.  moveq #3,d7
  1452.  move.w #68,d0
  1453.  move.w #140,d1
  1454.  moveq #9,d6
  1455.  bsr kirjoita
  1456.  move.l #msg3,a0
  1457.  move.w #6,d7
  1458.  move.w #216,d0
  1459.  move.w #140,d1
  1460.  moveq #9,d6
  1461.  bsr kirjoita
  1462. wait_for_click
  1463.  bsr intuimessage
  1464.  tst.l d0
  1465.  beq wait_for_click
  1466.  cmp.w #$c000,d6
  1467.  bne wait_for_click
  1468.  move.l cwindow,a0
  1469.  move.l $c(a0),d6
  1470.  move.w d6,d7
  1471.  swap d6
  1472.  cmp.w #122,d6
  1473.  blt wait_for_click
  1474.  cmp.w #150,d6
  1475.  bgt wait_for_click
  1476.   cmp.w #208,d7
  1477.   blt yes
  1478.   cmp.w #272,d7
  1479.   bgt wait_for_click
  1480.   moveq #0,d0
  1481.   rts
  1482. yes
  1483.   cmp.w #104,d7
  1484.   bgt wait_for_click
  1485.   cmp.w #56,d7
  1486.   blt wait_for_click
  1487.   moveq #1,d0
  1488.  rts
  1489.  
  1490. game_info_screen
  1491.   move.l #0,a0
  1492.   move.l grbase,a6
  1493.   move.w #321,d0
  1494.   move.l #sprite2,a1
  1495.   jsr _LVOMoveSprite(a6)
  1496.   move.l #0,a0
  1497.   move.l grbase,a6
  1498.   move.w #321,d0
  1499.   move.l #sprite1,a1
  1500.   jsr _LVOMoveSprite(a6)
  1501.  move.l grbase,a6
  1502.  move.l rport,a1
  1503.  moveq #0,d0
  1504.  jsr _LVOSetAPen(a6)
  1505.  move.l grbase,a6
  1506.  move.l rport,a1
  1507.  moveq #0,d0
  1508.  moveq #0,d1
  1509.  move.w #319,d2
  1510.  move.w #223,d3
  1511.  jsr _LVORectFill(a6)
  1512. ;*** seuraavaksi kirjoitetaan tekstit
  1513.  moveq #108,d4
  1514.  lea info,a4
  1515.  lea infolen,a3
  1516.  moveq #0,d7
  1517. info_loop
  1518.  subq #4,d4
  1519.  move.l d4,d5
  1520.  lsr.w #2,d5
  1521.  move.l 0(a4,d4.w),a0  ; tekstin osoite
  1522.  move.b 0(a3,d5.w),d7  ; tekstin pituus
  1523.  moveq #0,d0
  1524.  moveq #8,d1
  1525.  move.l d4,d5
  1526.  lsl.l #1,d5
  1527.  add.l d5,d1
  1528.  moveq #11,d6
  1529.  bsr kirjoita
  1530.  tst.b d4
  1531.  bne info_loop
  1532. ;***
  1533. wait_for_key
  1534.  bsr intuimessage
  1535.  tst.l d0
  1536.  beq wait_for_key
  1537.  cmp.w #RAWKEY,d5
  1538.  bne wait_for_key
  1539.  btst.l #7,d4
  1540.  bne wait_for_key
  1541.  rts
  1542.  
  1543. info_clear
  1544. ;*** palataan peliin
  1545.  bsr tee_kentta_b
  1546.  move.l #0,a0
  1547.  move.l #sprite1,a1
  1548.  move.w c_spritex,d0
  1549.  move.w c_spritey,d1
  1550.  move.l grbase,a6
  1551.  jsr _LVOMoveSprite(a6)
  1552.  move.w j1_spritex,d0
  1553.  move.w j1_spritey,d1
  1554.  move.l #0,a0
  1555.  move.l grbase,a6
  1556.  move.l #sprite2,a1
  1557.  jsr _LVOMoveSprite(a6)
  1558.  rts
  1559.  
  1560. kirjoita
  1561.  ;d7:ssa on tekstin pituus
  1562.  ;d6:ssa on väri
  1563.  ;a0:ssa on tekstin osoite
  1564.  ;d0:ssa on x-koord.
  1565.  ;d1:ssa on y-koord.
  1566.  move.l grbase,a6
  1567.  move.l rport,a1
  1568.  jsr _LVOMove(a6)
  1569.  move.l rport,a1
  1570.  move.l d6,d0
  1571.  jsr _LVOSetAPen(a6)
  1572.  move.l rport,a1
  1573.  move.w d7,d0
  1574.  jsr _LVOText(a6)
  1575.  rts
  1576.  
  1577. alusta_kentta
  1578.  ;muistin varaus
  1579.  move.l #2940,d0  ; 21 kenttää
  1580.  moveq.l #0,d1
  1581.  movea.l 4,a6
  1582.  jsr _LVOAllocMem(a6)
  1583.  ;muistin osoite on d0:ssa
  1584.  tst.l d0
  1585.  beq.s ei_kartta_muistia
  1586.  move.l d0,kenttac
  1587.  
  1588.  lea kentat,a0
  1589.  moveq #20,d1
  1590. alusta_kentta_loop
  1591.  move.l d0,(a0)
  1592.  add.l #140,d0
  1593.  add.l #4,a0
  1594.  dbra d1,alusta_kentta_loop
  1595. alusta_kentta_pois
  1596.  rts
  1597.  
  1598. ei_kartta_muistia
  1599.   lea msg6,a1
  1600.   move.l #msglen6,d3
  1601.   bsr valitukset_ei_tiedosto
  1602.   bsr GURU
  1603.   moveq #0,d0
  1604.   bra.s alusta_kentta_pois
  1605.  
  1606. Lataa
  1607.    move.l a6,-(sp)
  1608.  
  1609.  ; Argumentit : (name,buffer,length)
  1610.  ; tiedoston nimen osoite a0:ssa
  1611.  ; nimen pituus d1:ssä
  1612.  ; tiedoston koko d6:ssa
  1613.  ; muistin osoite d7:ssa
  1614.  ; avataan tiedosto
  1615.  ; lea maps,a0
  1616.    move.l d1,nimipituus ; nimen pituus myhempää kirjoittamista varten
  1617.    move.l a0,tiedosto ; myöhempää nimen kirjoittamista varten
  1618.    move.l a0,d1   ; Nimen osoite : name
  1619.    move.l #MODE_OLDFILE,d2 ; accessMode
  1620.    movea.l dosbase,a6
  1621.    jsr _LVOOpen(a6)
  1622.    tst.l d0   ; jos tulos on nolla, tiedostoa ei ole
  1623.    beq.s ei_tiedostoa
  1624.  
  1625.  ; tiedosto saatiin avattua
  1626.    move.l d0,filehandle ;tiedoston tunnus muistiin
  1627.    move.l d0,d1
  1628.    move.l d7,d2 ; osoite muistiin, jonne kirjoitetaan : buffer
  1629.    move.l d6,d3 ; muistiblokin koko : length
  1630.    movea.l dosbase,a6
  1631.    jsr _LVORead(a6)
  1632.    cmp.l d6,d0
  1633.    bne.s ei_tiedostoa
  1634.  
  1635.  ; suljetaan tiedosto
  1636.    move.l filehandle,d1
  1637.    movea.l dosbase,a6
  1638.    jsr _LVOClose(a6)
  1639.    moveq #-1,d0
  1640. lataa_loppu
  1641.    move.l (sp)+,a6
  1642.    rts
  1643.  
  1644. ei_tiedostoa
  1645.   move.l tiedosto,a1
  1646.   move.l nimipituus,d3
  1647.   bsr valitukset
  1648.   bsr GURU
  1649.   moveq #0,d0
  1650.   bra.s lataa_loppu
  1651.  
  1652. valitukset
  1653.   ; a1:ssa tiedoston nimi, d3:ssa nimenpituus
  1654.   moveq #0,d5
  1655.   lea valitus,a0
  1656.   lea msg7b,a2         ; "Tiedosto "
  1657.   move.w #msglen7b,d0
  1658.   move.w d0,d5
  1659. valitukset_loop1
  1660.   move.b -1(a2,d0.w),-1(a0,d0.w)
  1661.   subq #1,d0
  1662.   bne valitukset_loop1
  1663.  
  1664.   add.w d3,d5
  1665.   move.l d5,d4
  1666. valitukset_loop2
  1667.   move.b -1(a1,d3.w),-1(a0,d4.w)
  1668.   subq #1,d4
  1669.   subq #1,d3
  1670.   bne valitukset_loop2
  1671.  
  1672.   lea msg7,a2          ; " ei avaudu."
  1673.   move.w #msglen7,d0
  1674.   add.w d0,d5
  1675.   move.l d5,d4
  1676. valitukset_loop3
  1677.   move.b -1(a2,d0.w),-1(a0,d4.w)
  1678.   subq #1,d4
  1679.   subq #1,d0
  1680.   bne valitukset_loop3
  1681.  
  1682.   bsr lisaa_hiiri
  1683.   rts
  1684.  
  1685. valitukset_ei_tiedosto
  1686.   ; a1:ssa teksti, d3:ssa tekstinpituus
  1687.   moveq #0,d5
  1688.   lea valitus,a0
  1689.   move.w d3,d5
  1690. valitukset_et_loop1
  1691.   move.b -1(a1,d3.w),-1(a0,d3.w)
  1692.   subq #1,d3
  1693.   bne valitukset_et_loop1
  1694.  
  1695.   bsr lisaa_hiiri
  1696.   rts
  1697.  
  1698. lisaa_hiiri
  1699.   lea msg12,a2
  1700.   move.w #msglen12,d0
  1701.   add.w d0,d5
  1702.   move.l d5,d4
  1703. valitukset_loop4
  1704.   move.b -1(a2,d0.w),-1(a0,d4.w)
  1705.   subq #1,d4
  1706.   subq #1,d0
  1707.   bne valitukset_loop4
  1708.   rts
  1709.  
  1710. GURU
  1711.  ; d0:ssa AlertNumber,a0:ssa String, d1:ssä Height
  1712.  movea.l intbase,a6
  1713.  moveq #0,d0
  1714.  moveq #28,d1
  1715.  jsr _LVODisplayAlert(a6)
  1716.  rts
  1717.  
  1718. ;******
  1719.  
  1720. init_audio
  1721.  
  1722.  move.l #ioa_SIZEOF,d0
  1723.  move.l #(MEMF_CLEAR!MEMF_CHIP),d1
  1724.  move.l 4,a6
  1725.  jsr _LVOAllocMem(a6)
  1726.  move.l d0,aumsg
  1727.  beq ei_chip_muistia
  1728.  
  1729.  move.l #39912,d0
  1730.  move.l #MEMF_CHIP,d1
  1731.  move.l 4,a6
  1732.  jsr _LVOAllocMem(a6)
  1733.  move.l d0,audiodata
  1734.  beq ei_chip_muistia
  1735.  
  1736.  lea bell,a0
  1737.  move.l #belllen,d1
  1738.  move.l #16462,d6
  1739.  move.l audiodata,d7
  1740.  move.l d7,voice_bell
  1741.  bsr Lataa
  1742.  tst.l d0
  1743.  beq init_audio_pois
  1744.  
  1745.  lea aaah,a0
  1746.  move.l #aaahlen,d1
  1747.  add.l d6,d7
  1748.  move.l d7,voice_aaah
  1749.  move.l #2792,d6
  1750.  bsr Lataa
  1751.  tst.l d0
  1752.  beq init_audio_pois
  1753.  
  1754.  lea hit,a0
  1755.  move.l #hitlen,d1
  1756.  add.l d6,d7
  1757.  move.l d7,voice_hit
  1758.  move.l #720,d6
  1759.  bsr Lataa
  1760.  tst.l d0
  1761.  beq init_audio_pois
  1762.  
  1763.  lea buum,a0
  1764.  move.l #buumlen,d1
  1765.  add.l d6,d7
  1766.  move.l d7,voice_buum
  1767.  move.l #7738,d6
  1768.  bsr Lataa
  1769.  tst.l d0
  1770.  beq init_audio_pois
  1771.  
  1772.  lea boing,a0
  1773.  move.l #boinglen,d1
  1774.  add.l d6,d7
  1775.  move.l d7,voice_boing
  1776.  move.l #3648,d6
  1777.  bsr Lataa
  1778.  tst.l d0
  1779.  beq init_audio_pois
  1780.  
  1781.  lea chiump,a0
  1782.  move.l #chiumplen,d1
  1783.  add.l d6,d7
  1784.  move.l d7,voice_chiump
  1785.  move.l #5016,d6
  1786.  bsr Lataa
  1787.  tst.l d0
  1788.  beq init_audio_pois
  1789.  
  1790.  lea roar,a0
  1791.  move.l #roarlen,d1
  1792.  add.l d6,d7
  1793.  move.l d7,voice_roar
  1794.  move.l #3536,d6
  1795.  bsr Lataa
  1796.  tst.l d0
  1797.  beq init_audio_pois
  1798.  
  1799.  move.l aumsg,a1
  1800.  lea allocbits,a0
  1801.  move.l a0,ioa_Data(a1)
  1802.  move.l #4,ioa_Length(a1)
  1803.  move.l #0,MN_REPLYPORT(a1)
  1804.  move.b #127,LN_PRI(a1)
  1805.  move.b #ADIOF_NOWAIT,IO_FLAGS(a1)
  1806.  
  1807.  lea audioname,a0
  1808.  moveq #0,d0
  1809.  moveq #0,d1
  1810.  move.l 4,a6
  1811.  jsr _LVOOpenDevice(a6)
  1812.  tst.l d0
  1813.  bne ei_audiota
  1814.  
  1815.  move.l aumsg,a0
  1816.  move.l IO_UNIT(a0),unit
  1817. ; move.l #0,MN_REPLYPORT(a0)
  1818.  move.l IO_DEVICE(a0),audev
  1819.  move.l ioa_AllocKey(a0),allockey
  1820.  moveq #-1,d0
  1821. init_audio_pois
  1822.  rts
  1823.  
  1824. ei_audiota
  1825.   lea amsg1,a1
  1826.   move.l #amsglen1,d3
  1827.   bsr valitukset_ei_tiedosto
  1828.   bsr GURU
  1829.   moveq #0,d0
  1830.   bra.s init_audio_pois
  1831.  
  1832. ei_chip_muistia
  1833.   lea msg5,a1
  1834.   move.l #msglen5,d3
  1835.   bsr valitukset_ei_tiedosto
  1836.   bsr GURU
  1837.   moveq #0,d0
  1838.   bra.s init_audio_pois
  1839.  
  1840. voice_out
  1841.  ; annetaan a0:ssa osoite messagedataan
  1842.  moveq #13,d1
  1843.  move.l aumsg,a1
  1844. voice_out_loop
  1845.  move.b 0(a0,d1.w),ioa_Data(a1,d1.w)
  1846.  dbra d1,voice_out_loop
  1847.  
  1848. ; move.l audiodata,ioa_Data(a1)
  1849. ; move.w allockey,ioa_AllocKey(a1)
  1850.  move.w #CMD_WRITE,IO_COMMAND(a1)
  1851. ; move.l unit,IO_UNIT(a1)
  1852.  move.b #(ADIOF_NOWAIT!ADIOF_PERVOL),IO_FLAGS(a1)
  1853.  
  1854.  move.l aumsg,a1
  1855.  move.l a1,-(sp)
  1856.  jsr _BeginIO
  1857.  move.l (sp)+,a1
  1858.  
  1859.  rts
  1860.  
  1861. do_voice_bell
  1862.  move.l aumsg,a1
  1863.  move.l 4,a6
  1864.  jsr _LVOAbortIO(a6)
  1865.  lea voice_bell,a0
  1866.  bsr voice_out
  1867.  rts
  1868.  
  1869. do_voice_aaah
  1870.  move.l aumsg,a1
  1871.  move.l 4,a6
  1872.  jsr _LVOAbortIO(a6)
  1873.  lea voice_aaah,a0
  1874.  bsr voice_out
  1875.  rts
  1876.  
  1877. do_voice_hit
  1878.  move.l aumsg,a1
  1879.  move.l 4,a6
  1880.  jsr _LVOAbortIO(a6)
  1881.  lea voice_hit,a0
  1882.  bsr voice_out
  1883.  rts
  1884.  
  1885. do_voice_buum
  1886.  move.l aumsg,a1
  1887.  move.l 4,a6
  1888.  jsr _LVOAbortIO(a6)
  1889.  lea voice_buum,a0
  1890.  bsr voice_out
  1891.  rts
  1892.  
  1893. do_voice_boing
  1894.  move.l aumsg,a1
  1895.  move.l 4,a6
  1896.  jsr _LVOAbortIO(a6)
  1897.  lea voice_boing,a0
  1898.  bsr voice_out
  1899.  rts
  1900.  
  1901. do_voice_chiump
  1902.  move.l aumsg,a1
  1903.  move.l 4,a6
  1904.  jsr _LVOAbortIO(a6)
  1905.  lea voice_chiump,a0
  1906.  bsr voice_out
  1907.  rts
  1908.  
  1909. do_voice_roar
  1910.  move.l aumsg,a1
  1911.  move.l 4,a6
  1912.  jsr _LVOAbortIO(a6)
  1913.  lea voice_roar,a0
  1914.  bsr voice_out
  1915.  rts
  1916.  
  1917. free_audio
  1918.  move.l aumsg,a1
  1919.  move.l audev,d1
  1920.  tst.l d1
  1921.  beq free_audio_pois
  1922.  move.l 4,a6
  1923. ; jsr _LVOAbortIO(a6)
  1924.  
  1925. ; move.w allockey,ioa_AllocKey(a1)
  1926.  move.w #ADCMD_FREE,IO_COMMAND(a1)
  1927.  move.b #IOF_QUICK,IO_FLAGS(a1)
  1928. ; move.l unit,IO_UNIT(a1)
  1929.  move.l 4,a6
  1930.  jsr _LVODoIO(a6)
  1931.  
  1932.  move.l aumsg,a1
  1933.  move.l 4,a6
  1934.  jsr _LVOCloseDevice(a6)
  1935.  
  1936. free_audio_pois
  1937.  rts
  1938.  
  1939. ;******
  1940. VapautaMuistit
  1941.   move.l cwindow,a0
  1942.   cmpa.l #0,a0
  1943.   beq VM0
  1944.   move.l intbase,a6
  1945.   jsr _LVOCloseWindow(a6)
  1946. VM0
  1947.   move.l cscreen,a0
  1948.   cmpa.l #0,a0
  1949.   beq VM1
  1950. ;  move.l intbase,a6
  1951.   jsr _LVOCloseScreen(a6)
  1952. VM1
  1953.   move.l kenttac,a1
  1954.   cmpa.l #0,a1
  1955.   beq VM2
  1956.   move.l #2940,d0
  1957.   move.l 4,a6
  1958.   jsr _LVOFreeMem(a6)
  1959. VM2
  1960.  move.l aumsg,a1
  1961.  move.l #ioa_SIZEOF,d0
  1962.   cmpa.l #0,a1
  1963.   beq VM7
  1964. ; move.l 4,a6
  1965.  jsr _LVOFreeMem(a6)
  1966. VM7
  1967.  move.l audiodata,a1
  1968.  move.l #39912,d0
  1969.   cmpa.l #0,a1
  1970.   beq VM8
  1971. ; move.l 4,a6
  1972.  jsr _LVOFreeMem(a6)
  1973. VM8
  1974.   rts
  1975.   
  1976. ;**************************************************
  1977.  
  1978. ;        DATA ALUE
  1979. henget      dc.b 0
  1980. addr        dc.l 0
  1981. lenght      dc.l 0
  1982. kanta       dc.l 0
  1983. returnmsg   dc.l 0
  1984. string      dc.b '********',32,10
  1985. intname     dc.b 'intuition.library',0
  1986. dosname     dc.b 'dos.library',0
  1987. grname      dc.b 'graphics.library',0
  1988. audioname   dc.b 'audio.device',0
  1989. valitus     dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1990.             dc.l 0,0  ; mahtuu 128 merkkiä
  1991.  
  1992. intbase ds.l 1
  1993.  
  1994. newwindow
  1995.    dc.w 0
  1996.    dc.w 0
  1997.    dc.w 320
  1998.    dc.w 256
  1999.    dc.b -1
  2000.    dc.b -1
  2001.    dc.l MOUSEBUTTONS!MOUSEMOVE!RAWKEY!DELTAMOVE
  2002.    dc.l REPORTMOUSE!BORDERLESS!ACTIVATE!RMBTRAP
  2003.    dc.l 0
  2004.    dc.l 0
  2005.    dc.l 0
  2006.    dc.l 0 ;screen addr
  2007.    dc.l 0
  2008.    dc.w 0
  2009.    dc.w 0
  2010.    dc.w 0
  2011.    dc.w 0
  2012.    dc.w $f
  2013.  
  2014. newscreen
  2015.    dc.w 0
  2016.    dc.w 0
  2017.    dc.w 320
  2018.    dc.w 256
  2019.    dc.w 4
  2020.    dc.b 0
  2021.    dc.b 1
  2022.    dc.w 0
  2023.    dc.w $f
  2024.    dc.l 0
  2025.    dc.l 0
  2026.    dc.l 0
  2027.    dc.l 0
  2028.  
  2029. suo_i   ;kynät 0 ja 2
  2030.    dc.w 0,0
  2031.    dc.w 16,16,1
  2032.    dc.l suo_id
  2033.    dc.b 2,0
  2034.    dc.w 0,0
  2035. exit_i  ;kynät 0, 1, 4 ja 5
  2036.    dc.w 0,0
  2037.    dc.w 16,16,2
  2038.    dc.l exit_id
  2039.    dc.b 5,0
  2040.    dc.w 0,0
  2041. muuri_i ;kynät 1, 3, 5 ja 7
  2042.    dc.w 0,0
  2043.    dc.w 16,16,2
  2044.    dc.l muuri_id
  2045.    dc.b 6,1
  2046.    dc.w 0,0
  2047. kivi_i ;kynät 0, 4, 8 ja 12
  2048.    dc.w 0,0
  2049.    dc.w 16,16,2
  2050.    dc.l kivi_id
  2051.    dc.b 12,0
  2052.    dc.w 0,0
  2053. kallo_i ;kynät 0, 4, 8 ja 12
  2054.    dc.w 0,0
  2055.    dc.w 16,16,2
  2056.    dc.l kallo_id
  2057.    dc.b 12,0
  2058.    dc.w 0,0
  2059. pullo_i ;kynät 0, 2, 8 ja 10
  2060.    dc.w 0,0
  2061.    dc.w 16,16,2
  2062.    dc.l pullo_id
  2063.    dc.b 10,0
  2064.    dc.w 0,0
  2065. kranaatti_i ;kynät 0, 2, 4 ja 6
  2066.    dc.w 0,0
  2067.    dc.w 16,16,2
  2068.    dc.l kranaatti_id
  2069.    dc.b 6,0
  2070.    dc.w 0,0
  2071. portti_i ;kynät 0, 1, 4 ja 5
  2072.    dc.w 0,0
  2073.    dc.w 16,16,2
  2074.    dc.l portti_id
  2075.    dc.b 5,0
  2076.    dc.w 0,0
  2077. pallo_i ;kynät 0, 4, 8 ja 12
  2078.    dc.w 0,0
  2079.    dc.w 16,16,2
  2080.    dc.l pallo_id
  2081.    dc.b 12,0
  2082.    dc.w 0,0
  2083. myrkky_i ;kynät 0, 1, 8 ja 9
  2084.    dc.w 0,0
  2085.    dc.w 16,16,2
  2086.    dc.l myrkky_id
  2087.    dc.b 9,0
  2088.    dc.w 0,0
  2089. linko_i ;kynät 12, 13, 14 ja 15
  2090.    dc.w 0,0
  2091.    dc.w 16,16,2
  2092.    dc.l linko_id
  2093.    dc.b 3,12
  2094.    dc.w 0,0
  2095. happo_i  ;kynät 9, 11, 13 ja 15
  2096.    dc.w 0,0
  2097.    dc.w 16,16,2
  2098.    dc.l happo_id
  2099.    dc.b 6,9
  2100.    dc.w 0,0
  2101.  
  2102. spritedata2
  2103.    dc.l spritedata2b
  2104.    dc.l spritedata2c
  2105.    dc.l spritedata2d
  2106.    dc.l spritedata2e
  2107.    dc.l spritedata2d
  2108.    dc.l spritedata2c
  2109.    dc.l spritedata2b
  2110.    dc.l spritedata2a
  2111.    dc.l 0
  2112.  
  2113. sprite1
  2114.    dc.l spritedata1
  2115.    dc.w 16
  2116.    dc.w 20,20,2
  2117.  
  2118.    cnop 0,2
  2119.  
  2120. sprite2
  2121.    dc.l spritedata2a
  2122.    dc.w 16
  2123.    dc.w 20,20,3
  2124. sprite0
  2125.    dc.l pointer
  2126.    dc.w 1
  2127.    dc.w 20,20,1
  2128.  
  2129. kentat
  2130.    dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  2131. colormap
  2132.    dc.w $0333,$0d86,$0111,$0a64
  2133.    dc.w $0000,$0742,$0353,$0420
  2134.    dc.w $023f,$0ff3,$081f,$01f6
  2135.    dc.w $0fff,$0800,$0f70,$0333
  2136.    dc.w $0a64,$0cff,$019e,$0f90
  2137.    dc.w $0444,$0002,$0779,$0ddf
  2138.    dc.w $0555,$0002,$0779,$0ddf
  2139.    dc.w $0999,$0002,$0779,$0ddf
  2140.  
  2141. epoints
  2142.    dc.w 297,226
  2143.    dc.w 297,234
  2144.    dc.w 40,234
  2145.    dc.w 40,226
  2146.  
  2147. box_images
  2148.    dc.l muuri_i      ; image n:o $1
  2149.    dc.l suo_i        ; image n:o $2
  2150.    dc.l exit_i       ; image n:o $3
  2151.    dc.l kivi_i       ; image n:o $4
  2152.    dc.l kallo_i      ; image n:o $5
  2153.    dc.l pullo_i      ; image n:o $6
  2154.    dc.l kranaatti_i  ; image n:o $7
  2155.    dc.l portti_i     ; image n:o $8
  2156.    dc.l myrkky_i     ; image n:o $9
  2157.    dc.l linko_i      ; image n:o $A
  2158.    dc.l happo_i      ; image n:o $B
  2159. j1_koord
  2160.    dc.w 18,18
  2161.    dc.w 144,128
  2162.    dc.w 18,80
  2163.    dc.w 288,160
  2164.    dc.w 192,18
  2165.    dc.w 160,192
  2166.    dc.w 192,64
  2167.    dc.w 144,48
  2168.    dc.w 160,48
  2169.    dc.w 16,128
  2170.    dc.w 16,16
  2171.    dc.w 32,32
  2172.    dc.w 192,80
  2173.    dc.w 64,160
  2174.    dc.w 208,192
  2175.    dc.w 240,96
  2176.    dc.w 176,112
  2177.    dc.w 240,32
  2178.    dc.w 160,48
  2179.    dc.w 16,176
  2180.    dc.w 16,128
  2181. kenttac      ds.l 1
  2182. filehandle   dc.l 0
  2183. tiedosto     dc.l 0
  2184. nimipituus   dc.l 0
  2185. dosbase   ds.l 1
  2186. grbase    ds.l 1
  2187. cscreen   ds.l 1
  2188. cwindow   ds.l 1
  2189. rport     ds.l 1
  2190. vport     ds.l 1
  2191. dloop     dc.l 0
  2192. x         dc.b 0
  2193. y         dc.b 0
  2194. nkentta   dc.b 0
  2195. numsprite dc.b 0,0,0
  2196. nkenttaos dc.l 0
  2197. ym        dc.l 0
  2198. xm        dc.l 0
  2199. kivet     dc.b 0
  2200. energia   dc.w 255
  2201. msg1      dc.b 'Do you want to play again ?'
  2202. msg2      dc.b 'YES'
  2203. msg3      dc.b '..no..'
  2204. ;********** GAME CONTROL DATA ************
  2205. suunta        dc.b 0
  2206. sprite_suunta dc.b 0
  2207. c_suunta      dc.b 0
  2208. c_spritex     dc.w 321
  2209. c_spritey     dc.w 0
  2210. a_spritex     dc.w 0
  2211. a_spritey     dc.w 0
  2212. j1_spritex    dc.w 321
  2213. j1_spritey    dc.w 0
  2214. v_sprite      dc.b 0
  2215. nlaskuri      dc.b 1
  2216. vhlaskuri     dc.b 0
  2217. solaskuri     dc.w 0
  2218. txlaskuri     dc.b 0
  2219. elaskuri      dc.b 0
  2220. hlaskuri      dc.b 0
  2221. evlaskuri     dc.w 0
  2222. klaskuri      dc.b 0
  2223. j1laskuri     dc.w 0
  2224. jekkulaskuri  dc.w 0
  2225. jekut         dc.w 0
  2226. kpaikkax      dc.b 0
  2227. kpaikkay      dc.b 0
  2228. lopetus       dc.b 0
  2229. kanto         dc.b 0
  2230.  
  2231. ;********************
  2232.  
  2233. audiodata   dc.l 0
  2234. audev       dc.l 0
  2235. unit        dc.l 0
  2236. aumsg       dc.l 0
  2237. allockey    dc.w 0
  2238. allocbits   dc.b 1,2,4,8
  2239.  
  2240. animlaskuri    dc.w 0
  2241. framelaskuri   dc.w 0
  2242. frames         dc.b 0
  2243. frame          dc.b 0
  2244.  
  2245. voice_bell
  2246.  dc.l 0     ; ioa_Data
  2247.  dc.l 16462 ; ioa_Length
  2248.  dc.w 300   ; ioa_Period
  2249.  dc.w 63    ; ioa_Volume
  2250.  dc.w 1     ; ioa_Cycles
  2251.  
  2252. voice_aaah
  2253.  dc.l 0     ; ioa_Data
  2254.  dc.l 2792  ; ioa_Length
  2255.  dc.w 300   ; ioa_Period
  2256.  dc.w 63    ; ioa_Volume
  2257.  dc.w 1     ; ioa_Cycles
  2258.  
  2259. voice_hit
  2260.  dc.l 0     ; ioa_Data
  2261.  dc.l 720   ; ioa_Length
  2262.  dc.w 300   ; ioa_Period
  2263.  dc.w 63    ; ioa_Volume
  2264.  dc.w 1     ; ioa_Cycles
  2265.  
  2266. voice_buum
  2267.  dc.l 0     ; ioa_Data
  2268.  dc.l 7738  ; ioa_Length
  2269.  dc.w 300   ; ioa_Period
  2270.  dc.w 63    ; ioa_Volume
  2271.  dc.w 1     ; ioa_Cycles
  2272.  
  2273. voice_boing
  2274.  dc.l 0     ; ioa_Data
  2275.  dc.l 3648  ; ioa_Length
  2276.  dc.w 300   ; ioa_Period
  2277.  dc.w 63    ; ioa_Volume
  2278.  dc.w 1     ; ioa_Cycles
  2279.  
  2280. voice_chiump
  2281.  dc.l 0     ; ioa_Data
  2282.  dc.l 5016  ; ioa_Length
  2283.  dc.w 300   ; ioa_Period
  2284.  dc.w 63    ; ioa_Volume
  2285.  dc.w 1     ; ioa_Cycles
  2286.  
  2287. voice_roar
  2288.  dc.l 0     ; ioa_Data
  2289.  dc.l 3536  ; ioa_Length
  2290.  dc.w 300   ; ioa_Period
  2291.  dc.w 63    ; ioa_Volume
  2292.  dc.w 1     ; ioa_Cycles
  2293.  
  2294. amsg1       dc.b 0,208,11,'Can''t open audio.device !',0,1
  2295. amsglen1    equ *-amsg1
  2296.  
  2297. ;**
  2298. msg0       dc.b 'DekaQuest V1.0 © Leo Puolamaa May 1991',$0a
  2299. msglen0    equ *-msg0
  2300.            dc.b 0
  2301. msg4       dc.b 0,216,11,'Screen won''t open.',0,1
  2302. msglen4    equ *-msg4
  2303. msg5       dc.b 0,216,11,'Out of CHIP_MEM !',0,1
  2304. msglen5    equ *-msg5
  2305. msg6       dc.b 0,216,11,'Map memory won''t open.',0,1
  2306. msglen6    equ *-msg6
  2307. msg7       dc.b ' won''t open.',0,1
  2308. msglen7    equ *-msg7
  2309. msg7b      dc.b 0,172,11,'File '
  2310. msglen7b   equ *-msg7b
  2311. msg8       dc.b 0,216,11,'No sprites !',0,1
  2312. msglen8    equ *-msg8
  2313. msg9       dc.b 'Level :'
  2314. msglen9    equ *-msg9
  2315.            dc.b 0
  2316. msg10      dc.b 'DiamondQuest © Leo Puolamaa'
  2317. msglen10   equ *-msg10
  2318.            dc.b 0
  2319. msg11      dc.b 'GAME PAUSED'
  2320. msglen11   equ *-msg11
  2321.            dc.b 0
  2322. msg12      dc.b 0,172,21,'Press a mouse button to continue...',0,0
  2323. msglen12   equ *-msg12
  2324. msg13      dc.b 'Amazing,how on earth did you do it?!'
  2325. msglen13   equ *-msg13
  2326.            dc.b 0
  2327.  cnop 0,2
  2328. info
  2329.  dc.l info0
  2330.  dc.l info1
  2331.  dc.l info2
  2332.  dc.l info3
  2333.  dc.l info4
  2334.  dc.l info5
  2335.  dc.l info6
  2336.  dc.l info7
  2337.  dc.l info8
  2338.  dc.l info9
  2339.  dc.l info10
  2340.  dc.l info11
  2341.  dc.l info12
  2342.  dc.l info13
  2343.  dc.l info14
  2344.  dc.l info15
  2345.  dc.l info16
  2346.  dc.l info17
  2347.  dc.l info18
  2348.  dc.l info19
  2349.  dc.l info20
  2350.  dc.l info21
  2351.  dc.l info22
  2352.  dc.l info23
  2353.  dc.l info24
  2354.  dc.l info25
  2355.  dc.l info26
  2356.  
  2357. infolen
  2358.  dc.b infolen0
  2359.  dc.b infolen1
  2360.  dc.b infolen2
  2361.  dc.b infolen3
  2362.  dc.b infolen4
  2363.  dc.b infolen5
  2364.  dc.b infolen6
  2365.  dc.b infolen7
  2366.  dc.b infolen8
  2367.  dc.b infolen9
  2368.  dc.b infolen10
  2369.  dc.b infolen11
  2370.  dc.b infolen12
  2371.  dc.b infolen13
  2372.  dc.b infolen14
  2373.  dc.b infolen15
  2374.  dc.b infolen16
  2375.  dc.b infolen17
  2376.  dc.b infolen18
  2377.  dc.b infolen19
  2378.  dc.b infolen20
  2379.  dc.b infolen21
  2380.  dc.b infolen22
  2381.  dc.b infolen23
  2382.  dc.b infolen24
  2383.  dc.b infolen25
  2384.  dc.b infolen26
  2385.  
  2386. info0       dc.b '          «** DiamondQuest **»'
  2387. infolen0    equ *-info0
  2388. info1       dc.b '          --------------------'
  2389. infolen1    equ *-info1
  2390. info2       dc.b '  Welcome to the world of games. This'
  2391. infolen2    equ *-info2
  2392. info3       dc.b 'time you are a grey ball and have just'
  2393. infolen3    equ *-info3
  2394. info4       dc.b 'entered a great maze to pick up some'
  2395. infolen4    equ *-info4
  2396. info5       dc.b 'diamonds and get rich.  There are 20'
  2397. infolen5    equ *-info5
  2398. info6       dc.b 'levels each containing five diamonds.'
  2399. infolen6    equ *-info6
  2400. info7       dc.b 'Exit to the next level becomes available'
  2401. infolen7    equ *-info7
  2402. info8       dc.b 'after you have collected all diamonds'
  2403. infolen8    equ *-info8
  2404. info9       dc.b 'on the current level.  Although you are'
  2405. infolen9    equ *-info9
  2406. info10      dc.b 'not immortal, you still have four lives.'
  2407. infolen10   equ *-info10
  2408. info11      dc.b 'To roll around you drag the mouse to the'
  2409. infolen11   equ *-info11
  2410. info12      dc.b 'desired direction.  To perform some'
  2411. infolen12   equ *-info12
  2412. info13      dc.b 'important actions you may use these'
  2413. infolen13   equ *-info13
  2414. info14      dc.b 'commands :'
  2415. infolen14   equ *-info14
  2416. info15      dc.b ' '
  2417. infolen15   equ *-info15
  2418. info16      dc.b ' - Left mouse button to pick up things'
  2419. infolen16   equ *-info16
  2420. info17      dc.b ' - Right button to drop a handgrenade'
  2421. infolen17   equ *-info17
  2422. info18      dc.b ' - Esc for suicide'
  2423. infolen18   equ *-info18
  2424. info19      dc.b ' - "p" to start and end pause mode'
  2425. infolen19   equ *-info19
  2426. info20      dc.b ' - Help for this information'
  2427. infolen20   equ *-info20
  2428. info21      dc.b ' - Left & right Amiga + ctrl to reset'
  2429. infolen21   equ *-info21
  2430. info22      dc.b ' '
  2431. infolen22   equ *-info22
  2432. info23      dc.b ' © Leo Puolamaa June 1991 ,Oulu Finland'
  2433. infolen23   equ *-info23
  2434. info24      dc.b ' '
  2435. infolen24   equ *-info24
  2436. info25      dc.b ' '
  2437. infolen25   equ *-info25
  2438. info26      dc.b ' HIT A KEY...'
  2439. infolen26   equ *-info26
  2440.  
  2441. maps        dc.b 'DQ:maps'
  2442. mapslen     equ *-maps
  2443.             dc.b 0
  2444. bell        dc.b 'DQ:Bell.sound'
  2445. belllen     equ *-bell
  2446.             dc.b 0
  2447. aaah        dc.b 'DQ:Aaah.sound'
  2448. aaahlen     equ *-aaah
  2449.             dc.b 0
  2450. hit         dc.b 'DQ:Hit.sound'
  2451. hitlen      equ *-hit
  2452.             dc.b 0
  2453. buum        dc.b 'DQ:Buum.sound'
  2454. buumlen     equ *-buum
  2455.             dc.b 0
  2456. boing       dc.b 'DQ:Boing.sound'
  2457. boinglen    equ *-boing
  2458.             dc.b 0
  2459. chiump      dc.b 'DQ:Chiump.sound'
  2460. chiumplen   equ *-chiump
  2461.             dc.b 0
  2462. roar        dc.b 'DQ:Roar.sound'
  2463. roarlen     equ *-roar
  2464.             dc.b 0
  2465.  
  2466.  SECTION sprites,DATA ; ladataan CHIP -muistiin
  2467.  
  2468. pointer
  2469.    dc.w 0,0,0,0,0,0
  2470.  
  2471. spritedata1
  2472.    dc.w 0,0
  2473.    dc.w $07e0,$0000
  2474.    dc.w $1db8,$0240
  2475.    dc.w $285c,$17a0
  2476.    dc.w $502e,$2fd0
  2477.    dc.w $478a,$3ff4
  2478.    dc.w $9fe3,$7ffc,$bff1,$7ffe,$bff3,$7ffc
  2479.    dc.w $7ffd,$fffa,$7ffb,$fffc,$7ffd,$fffa
  2480.    dc.w $7ffa,$7ffc
  2481.    dc.w $3ff2,$7ffc
  2482.    dc.w $3ff4,$3ff8
  2483.    dc.w $1ff8,$1fe0
  2484.    dc.w $07e0,$0780
  2485.    dc.w 0,0
  2486.  
  2487. spritedata2a
  2488.    dc.w 0,0
  2489.    dc.w $03e0,$0000
  2490.    dc.w $1018,$0fe0
  2491.    dc.w $066c,$3990
  2492.    dc.w $4e72,$718c
  2493.    dc.w $4e72,$718c
  2494.    dc.w $8c31,$f3ce
  2495.    dc.w $8001,$fffe
  2496.    dc.w $a005,$fffe
  2497.    dc.w $a185,$fe7e
  2498.    dc.w $a3c5,$fc3e
  2499.    dc.w $b00d,$fffe
  2500.    dc.w $581a,$7ffc
  2501.    dc.w $4ff2,$7ffc
  2502.    dc.w $27e4,$3ff8
  2503.    dc.w $1008,$1ff0
  2504.    dc.w $07c0,$07e0
  2505.    dc.w 0,0
  2506.  
  2507. spritedata2b
  2508.    dc.w 0,0
  2509.    dc.w $03e0,$0000
  2510.    dc.w $1018,$0fe0
  2511.    dc.w $066c,$3990
  2512.    dc.w $4e72,$718c
  2513.    dc.w $4e72,$718c
  2514.    dc.w $8c31,$f3ce
  2515.    dc.w $8001,$fffe
  2516.    dc.w $a185,$fe7e
  2517.    dc.w $a3c5,$fc3e
  2518.    dc.w $b00d,$fffe
  2519.    dc.w $b81d,$fffe
  2520.    dc.w $5ffa,$7ffc
  2521.    dc.w $4ff2,$7c3c
  2522.    dc.w $27e4,$3ff8
  2523.    dc.w $1008,$1ff0
  2524.    dc.w $07c0,$07e0
  2525.    dc.w 0,0
  2526.  
  2527. spritedata2c
  2528.    dc.w 0,0
  2529.    dc.w $03e0,$0000
  2530.    dc.w $1018,$0fe0
  2531.    dc.w $066c,$3990
  2532.    dc.w $4e72,$718c
  2533.    dc.w $4e72,$718c
  2534.    dc.w $8c31,$f3ce
  2535.    dc.w $8181,$fe7e
  2536.    dc.w $a3c5,$fc3e
  2537.    dc.w $b00d,$fffe
  2538.    dc.w $b81d,$eff6
  2539.    dc.w $bffd,$f7ee
  2540.    dc.w $5ffa,$781c
  2541.    dc.w $4ff2,$7c3c
  2542.    dc.w $27e4,$3ff8
  2543.    dc.w $1008,$1ff0
  2544.    dc.w $07c0,$07e0
  2545.    dc.w 0,0
  2546.  
  2547. spritedata2d
  2548.    dc.w 0,0
  2549.    dc.w $03e0,$0000
  2550.    dc.w $1018,$0fe0
  2551.    dc.w $066c,$3990
  2552.    dc.w $4e72,$718c
  2553.    dc.w $4e72,$718c
  2554.    dc.w $8c31,$f3ce
  2555.    dc.w $e3c7,$fc3e
  2556.    dc.w $f00f,$fffe
  2557.    dc.w $f81f,$cff2
  2558.    dc.w $bffd,$e7e6
  2559.    dc.w $bffd,$f00e
  2560.    dc.w $5ffa,$781c
  2561.    dc.w $4ff2,$7c3c
  2562.    dc.w $27e4,$3c38
  2563.    dc.w $17e8,$1ff0
  2564.    dc.w $07c0,$07e0
  2565.    dc.w 0,0
  2566.  
  2567. spritedata2e
  2568.    dc.w 0,0
  2569.    dc.w $03e0,$0000
  2570.    dc.w $1018,$0fe0
  2571.    dc.w $066c,$3990
  2572.    dc.w $4e72,$718c
  2573.    dc.w $4e72,$718c
  2574.    dc.w $8db1,$f24e
  2575.    dc.w $e247,$fdbe
  2576.    dc.w $f81f,$9ff8
  2577.    dc.w $ffff,$c7e2
  2578.    dc.w $bffd,$e006
  2579.    dc.w $bffd,$f00e
  2580.    dc.w $5ffa,$781c
  2581.    dc.w $4ff2,$781c
  2582.    dc.w $27e4,$3c38
  2583.    dc.w $17e8,$1c30
  2584.    dc.w $07c0,$07e0
  2585.    dc.w 0,0
  2586.  
  2587. pointer2
  2588.    dc.w 0,0
  2589.    dc.w $8000,$0000,$8000,$4000
  2590.    dc.w $c000,$2000,$4000,$3000
  2591.    dc.w $6000,$1800,$3000,$0c00
  2592.    dc.w $1800,$0600,$0c00,$0300
  2593.    dc.w $0604,$0184,$030e,$00ce
  2594.    dc.w $019c,$007c,$00e8,$0038
  2595.    dc.w $0058,$0068,$00fc,$0004
  2596.    dc.w $018e,$0146,$0086,$0006
  2597.    dc.w 0,0
  2598.  
  2599. suo_id
  2600.    dc.w $6262,$1919,$9898,$4646
  2601.    dc.w $6262,$1919,$9898,$4646
  2602.    dc.w $6262,$1919,$9898,$4646
  2603.    dc.w $6262,$1919,$9898,$4646
  2604. exit_id
  2605.    dc.w $0000,$0f60,$3ff8,$2ff8
  2606.    dc.w $7ff4,$f83e,$f39e,$f21e
  2607.    dc.w $f31e,$f21e,$f39e,$683c
  2608.    dc.w $7ff6,$3ff8,$1ff8,$07e0
  2609.  
  2610.    dc.w $07e0,$17f8,$1f7c,$5f76
  2611.    dc.w $200e,$77cf,$7c6f,$0def
  2612.    dc.w $7ce1,$7def,$7c6f,$37c6
  2613.    dc.w $0ef8,$1efc,$06e0,$0000
  2614. muuri_id
  2615.    dc.w $7fff,$3fff,$1fff,$0fff
  2616.    dc.w $0fff,$081f,$0a1f,$0b9f
  2617.    dc.w $0b9f,$0bdf,$081f,$0fff
  2618.    dc.w $1007,$2003,$4001,$8000
  2619.  
  2620.    dc.w $ffff,$7fff,$3fff,$1fff
  2621.    dc.w $000f,$07ef,$062f,$062f
  2622.    dc.w $062f,$07ef,$07ef,$000f
  2623.    dc.w $000f,$0007,$0003,$0001
  2624. kivi_id
  2625.    dc.w $0000,$0000,$03c0,$07f0
  2626.    dc.w $07f8,$03f8,$01fc,$01fc
  2627.    dc.w $3f00,$3f80,$1fc0,$1fe0
  2628.    dc.w $0fe0,$03c0,$0000,$0000
  2629.  
  2630.    dc.w $0000,$0000,$03c0,$0fe0
  2631.    dc.w $1fe0,$1fc0,$3f80,$3f80
  2632.    dc.w $00fc,$01fc,$03f8,$07f8
  2633.    dc.w $07f0,$03c0,$0000,$0000
  2634. kallo_id
  2635.    dc.w $0380,$3f60,$7fd0,$6fe8
  2636.    dc.w $f5f8,$fedc,$fffc,$ffdc
  2637.    dc.w $7ff4,$1ffe,$03fd,$03fe
  2638.    dc.w $0195,$01ff,$00fe,$007c
  2639.  
  2640.    dc.w $03c0,$3ff0,$7ff8,$7ff8
  2641.    dc.w $fffc,$fff0,$ffe0,$fff0
  2642.    dc.w $7ffe,$1fff,$027f,$027f
  2643.    dc.w $0115,$0195,$00ff,$007e
  2644. pullo_id
  2645.    dc.w $0000,$0180,$0720,$0340
  2646.    dc.w $0340,$0340,$0340,$0340
  2647.    dc.w $0fb0,$1fe8,$3f64,$3e24
  2648.    dc.w $3f44,$1fb8,$03c0,$0000
  2649.  
  2650.    dc.w $0000,$0000,$07c0,$0380
  2651.    dc.w $0380,$0380,$0380,$0380
  2652.    dc.w $0fc0,$1ff0,$3ef8,$3df8
  2653.    dc.w $3ef8,$1fc0,$0300,$0000
  2654. kranaatti_id
  2655.    dc.w $0000,$0000,$6000,$3000
  2656.    dc.w $1800,$3e00,$37e0,$27f0
  2657.    dc.w $27f8,$27f8,$27f8,$33fc
  2658.    dc.w $11fc,$08fc,$0418,$0200
  2659.  
  2660.    dc.w $1800,$2800,$1000,$0800
  2661.    dc.w $0400,$05e0,$0610,$07e8
  2662.    dc.w $07f4,$06f4,$0774,$039a
  2663.    dc.w $09ea,$04f8,$0200,$01c0
  2664. portti_id
  2665.    dc.w $0490,$e00e,$e00e,$e24e
  2666.    dc.w $0000,$0000,$4924,$0000
  2667.    dc.w $0000,$2492,$0000,$0000
  2668.    dc.w $0240,$e00e,$e00e,$e92e
  2669.  
  2670.    dc.w $f49f,$7007,$7007,$1241
  2671.    dc.w $0000,$0000,$4924,$0000
  2672.    dc.w $0000,$2492,$0000,$0000
  2673.    dc.w $f24f,$7007,$7007,$1921
  2674. pallo_id
  2675.    dc.w $07e0,$1db8,$285c,$502e
  2676.    dc.w $478a,$9fe3,$bff1,$bff3
  2677.    dc.w $7ffd,$7ffb,$7ffd,$7ffa
  2678.    dc.w $3ff2,$3ff4,$1ff8,$07e0
  2679.  
  2680.    dc.w $0000,$0240,$17a0,$2fd0
  2681.    dc.w $3ff4,$7ffc,$7ffe,$7ffc
  2682.    dc.w $fffa,$fffc,$fffa,$7ffc
  2683.    dc.w $7ffc,$3ff8,$1fe0,$0780
  2684. myrkky_id
  2685.    dc.w $0000,$07e0,$07e0,$03c0
  2686.    dc.w $03c0,$03c0,$0ff0,$3ffc
  2687.    dc.w $7bbe,$7d7e,$7efe,$7d7e
  2688.    dc.w $3bbc,$1ff8,$07e0,$0000
  2689.  
  2690.    dc.w $0000,$07c0,$07c0,$0300
  2691.    dc.w $0380,$0380,$0fc0,$3ff0
  2692.    dc.w $7ff8,$6ff8,$7ff8,$6ff8
  2693.    dc.w $3ff0,$1fe0,$0780,$0000
  2694. linko_id
  2695.    dc.w $ffff,$fcff,$ffff,$fe7f
  2696.    dc.w $f01f,$f0df,$e34f,$c065
  2697.    dc.w $a021,$a007,$f00f,$f00f
  2698.    dc.w $fc3f,$feff,$fe7f,$ffff
  2699.  
  2700.    dc.w $f00f,$ed37,$de7b,$bdbd
  2701.    dc.w $7fee,$7f2e,$3cb4,$3b9a
  2702.    dc.w $59dc,$2d3c,$74fe,$77fe
  2703.    dc.w $bdbd,$de7b,$ecb7,$f00f
  2704. happo_id
  2705.    dc.w $ffff,$fcff,$fcff,$fcff
  2706.    dc.w $fe7f,$feff,$f1ff,$c7ff
  2707.    dc.w $ce6f,$cdaf,$cc2f,$e5bf
  2708.    dc.w $e7df,$f3ff,$f87f,$ffff
  2709.  
  2710.    dc.w $ffff,$fc3f,$fc3f,$fc3f
  2711.    dc.w $fe7f,$fe7f,$f00f,$c003
  2712.    dc.w $c183,$c243,$c3c3,$e247
  2713.    dc.w $e007,$f00f,$f81f,$ffff
  2714.  end
  2715.  
  2716.