?login_element?

Subversion Repositories NedoOS

Rev

Rev 882 | Rev 1965 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.         DEVICE ZXSPECTRUM128
  2.         include "../../_sdk/sys_h.asm"
  3.  
  4. atm=1
  5.  
  6. OLDMUZ=0
  7.  
  8. TEXBMP=1
  9. NTEXPGS=5
  10. NSPRPGS=2;1
  11.  
  12. SPOIL6BSTACK=0x4000
  13. STACK=SPOIL6BSTACK-6
  14. INTSTACK=0x3e80
  15. ;scrbase=0x8000
  16.  
  17. addhlbc=1 ;ьюцэю scrhgt=200 ш т юфэющ ёЄЁрэшЎх
  18. customscales=0;1
  19.  
  20. IMPOSSIBLECOLOR=0x01 ;(╫+┴)
  21.  
  22. muz=0x8000
  23.  
  24.         org PROGSTART
  25. begin
  26.         ld sp,STACK
  27.         OS_HIDEFROMPARENT
  28.  
  29.         ld e,0;+0x80
  30.         OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+0x80=keep screen ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
  31.         ld e,0 ;color byte
  32.         OS_CLS
  33.         ld e,1
  34.         OS_SETSCREEN
  35.         ld e,0 ;color byte
  36.         OS_CLS
  37.                
  38.                 ld de,res_path
  39.                 OS_CHDIR
  40.  
  41.         OS_GETMAINPAGES
  42. ;dehl=эюьхЁр ёЄЁрэшЎ т 0000,4000,8000,c000
  43.         ld a,e
  44.         LD (pgmain4000),A
  45.         ld a,h
  46.         LD (pgmain8000),A
  47.         ld a,l
  48.         LD (pgscalersnum),A
  49.        if 1==0 ; OLDMUZ
  50.         ld a,h
  51.         ld (pgmuznum),a
  52.        endif
  53.  
  54.         ;OS_GETSCREENPAGES
  55. ;de=ёЄЁрэшЎ√ 0-ую ¤ъЁрэр (d=ёЄрЁ°р ), hl=ёЄЁрэшЎ√ 1-ую ¤ъЁрэр (h=ёЄрЁ°р )
  56.         ;ld a,l
  57.         ;ld (setpgs_scr_low),a
  58.         ;xor e
  59.         ;ld (setpgs_scr_xor),a
  60.         ;ld a,d
  61.         ;xor e
  62.         ;ld (setpgs_scr_high_xor_low),a
  63.  
  64.        if OLDMUZ
  65.         ;ld hl,muzfilename
  66.         ;call loadpage
  67.         ;ld (pgsfx),a
  68.         ;call loadpage
  69.         ;ld (pgmusic),a
  70.         ;call setpgsmain40008000
  71.         ;ld a,(pgscalersnum)
  72.         ;SETPGC000
  73.         ;OS_NEWPAGE
  74.         ;ld a,e
  75.         ;ld (pgmuznum),a
  76.         ;SETPG8000
  77.         ld hl,wasmuz
  78.         ld de,muz
  79.         ld bc,wasmuz_sz
  80.         ldir
  81.         call muz
  82.        else
  83.         ld hl,muzfilename
  84.         call loadpage
  85.         ld (pgsfx),a
  86.         call loadpage
  87.         ld (pgmusic),a
  88.         SETPG4000
  89.        
  90. ;¤Єю юЄэюёшЄё  ъ чруЁєчъх єЁютэ 
  91.         push af
  92.         call 0x4000 ;init
  93.        
  94.         ld a,(pgsfx)
  95.         SETPG8000
  96.         pop af
  97.         ld hl,0x4005 ;play
  98.         OS_SETMUSIC
  99.         call setpgsmain40008000
  100.         ld a,(pgscalersnum)
  101.         SETPGC000
  102.        endif
  103.        
  104.         ;pop af ;LD a,(pg8000)
  105.         ;SETPG8000
  106.  
  107.         OS_NEWPAGE
  108.         ld a,e
  109.         ld (pgmapnum),a
  110.  
  111.         if TEXBMP
  112.         ld de,texfilename
  113.         call openfile_skipbmpheader
  114. ;b=handle
  115.         ld hl,ttexpgs+NTEXPGS-1
  116.         ld c,NTEXPGS
  117. gettexpgs0
  118.         push bc
  119.         push hl
  120.         call ldpgrecodebmp
  121.        
  122.         push de
  123.        
  124. ;2. яЁюїюфшь яю hl яЁрт√щ тхЁїэшщ ЄЁхєуюы№эшъ ЄхъёЄєЁ√, р яю de - ыхт√щ эшцэшщ, ьхэ хь шї ьхёЄрьш
  125.         ld hl,0x4000
  126. gettexpgsrot0
  127.         push hl    
  128.         ld b,64
  129. gettexpgsrot1
  130.         push bc
  131.         push hl
  132.         ld d,h
  133.         ld e,l
  134. gettexpgsrot2
  135.         ld c,(hl)
  136.         ld a,(de)
  137.         ld (hl),a
  138.         ld a,c
  139.         ld (de),a
  140.         inc l
  141.         inc d
  142.         djnz gettexpgsrot2
  143.         pop hl
  144.         inc l
  145.         inc h
  146.         pop bc
  147.         djnz gettexpgsrot1
  148.         pop hl
  149.         ld a,l
  150.         add a,64
  151.         ld l,a
  152.         jr nz,gettexpgsrot0
  153.        
  154.         pop de
  155.         pop hl
  156.         ld (hl),e
  157.         dec hl
  158.         pop bc
  159.         dec c
  160.         jr nz,gettexpgs0
  161.  
  162.         OS_CLOSEHANDLE
  163.  
  164.         ld de,sprfilename
  165.         call openfile_skipbmpheader
  166. ;b=handle
  167.         ld hl,ttexpgs+NTEXPGS+NSPRPGS-1
  168.         ld c,NSPRPGS
  169. getsprpgs0
  170.         push bc
  171.         push hl
  172.         call ldpgrecodebmp        
  173.         pop hl
  174.         ld (hl),e
  175.         dec hl
  176.         pop bc
  177.         dec c
  178.         jr nz,getsprpgs0
  179.  
  180.         OS_CLOSEHANDLE
  181.  
  182.         else
  183.        
  184.         ld hl,ttexpgs
  185.         ld b,5
  186. getttexpgs0
  187.         push bc
  188.         push hl
  189.         OS_NEWPAGE
  190.        
  191.         push de
  192.         ld a,e
  193.         SETPG4000
  194.         ld de,texfilename
  195.         OS_OPENHANDLE
  196.         push bc
  197.         ld de,0x4000 ;addr
  198.         ld hl,0x4000 ;size
  199.         OS_READHANDLE
  200.         pop bc
  201.         OS_CLOSEHANDLE
  202.        
  203.         ld hl,texfilenamenum
  204.         inc (hl)
  205.         pop de
  206.        
  207.         pop hl
  208.         ld (hl),e
  209.         inc hl
  210.         pop bc
  211.         djnz getttexpgs0
  212.  
  213.         endif
  214.  
  215.  
  216.         LD HL,tID
  217. REtID0  LD A,(HL)
  218.         add a,ttexpgs&0xff
  219.         ld e,a
  220.         adc a,ttexpgs/256
  221.         sub e
  222.         ld d,a
  223.         ld a,(de)
  224. ;basepggfx=$+1
  225. ;        ADD A,0
  226.         LD (HL),A
  227.         INC L
  228.         INC L
  229.         jr NZ,REtID0
  230.          ld hl,tID+128
  231.          ld de,tID
  232.          ld bc,128
  233.          ldir ;ID_DOOR < 128
  234.  
  235.         ld ix,tscales
  236.         ld hl,tscales_rev
  237.         ld b,64
  238. revscale0
  239.         push bc
  240.         push hl
  241.         ld c,(ix)
  242.         inc ix
  243.         ld b,(ix)
  244.         inc ix
  245.         ld de,256
  246. ;фхыхэшх
  247. ;DE=+-7.8;BC=+7.8
  248. ;DE=DE/BC=+-8.7/2
  249.     ;BC ёюїЁрэ хЄё !!!
  250.         call MONDIV
  251.         pop hl
  252.         sla e
  253.         rl d
  254.         ld (hl),e
  255.         inc hl
  256.         ld (hl),d
  257.         inc hl
  258.         pop bc
  259.         djnz revscale0
  260.  
  261.         ;YIELD ;шэрўх эх єёЄрэютшЄё  тшфхюЁхцшь ш ярышЄЁр?
  262.  
  263.         if 1==0 ;эхы№ч  яЁш шэЄхЁяюы Ўшш
  264.         ld hl,tlogd2sca
  265. retlogd2sca0
  266.         sla (hl)
  267.         sla (hl)
  268.         inc l
  269.         jr nz,retlogd2sca0
  270.         endif
  271.  
  272.         call genscalers
  273.  
  274.         call swapimer
  275.  
  276.         call TEXCODEGO
  277.        
  278.         call swapimer
  279.        
  280.         ;call shutay        
  281. pgmusic=$+1
  282.         ld a,0
  283.         SETPG4000
  284.         halt
  285.         ld hl,0x4000;0x4008+3 ;stop
  286.         OS_SETMUSIC
  287.         halt
  288.         QUIT
  289.  
  290. setpgsmain40008000
  291. pgmain4000=$+1
  292.         ld a,0
  293.         SETPG4000
  294. pgmain8000=$+1
  295.         ld a,0
  296.         SETPG8000
  297.         ret
  298.  
  299.         if 1==0
  300. setpgsscr40008000_current
  301.         call getuser_scr_low_cur
  302.         SETPG4000
  303.         call getuser_scr_high_cur
  304.         SETPG8000
  305.         ret
  306.  
  307. setpgsscr40008000
  308.         call getuser_scr_low
  309.         SETPG4000
  310.         call getuser_scr_high
  311.         SETPG8000
  312.         ret
  313.  
  314. setpgscrlow4000
  315.         call getuser_scr_low
  316.         SETPG4000
  317.         ret
  318.  
  319. setpgscrhigh4000
  320.         call getuser_scr_high
  321.         SETPG4000
  322.         ret
  323.         endif
  324.  
  325. getuser_scr_low
  326. getuser_scr_low_patch=$+1
  327. getuser_scr_low_patchN=0xff&(user_scr0_low^user_scr1_low)
  328.         ld a,(user_scr1_low) ;ok
  329.         ret
  330.  
  331. getuser_scr_high
  332. getuser_scr_high_patch=$+1
  333. getuser_scr_high_patchN=0xff&(user_scr0_high^user_scr1_high)
  334.         ld a,(user_scr1_high) ;ok
  335.         ret
  336.  
  337. getuser_scr_low_cur
  338. getuser_scr_low_cur_patch=$+1
  339. getuser_scr_low_cur_patchN=0xff&(user_scr0_low^user_scr1_low)
  340.         ld a,(user_scr0_low) ;ok
  341.         ret
  342.  
  343. getuser_scr_high_cur
  344. getuser_scr_high_cur_patch=$+1
  345. getuser_scr_high_cur_patchN=0xff&(user_scr0_high^user_scr1_high)
  346.         ld a,(user_scr0_high) ;ok
  347.         ret
  348.  
  349. changescrpg_current
  350. ;        ld a,(setpgs_scr_low)
  351. ;setpgs_scr_scrxor=$+1
  352. ;        xor 0
  353. ;        ld (setpgs_scr_low),a
  354.         ld hl,getuser_scr_low_patch
  355.         ld a,(hl)
  356.         xor getuser_scr_low_patchN
  357.         ld (hl),a
  358.         ld hl,getuser_scr_high_patch
  359.         ld a,(hl)
  360.         xor getuser_scr_high_patchN
  361.         ld (hl),a
  362.         ld hl,getuser_scr_low_cur_patch
  363.         ld a,(hl)
  364.         xor getuser_scr_low_cur_patchN
  365.         ld (hl),a
  366.         ld hl,getuser_scr_high_cur_patch
  367.         ld a,(hl)
  368.         xor getuser_scr_high_cur_patchN
  369.         ld (hl),a
  370.  
  371.         ld a,1
  372. curscrnum=$+1
  373.         xor 0
  374.         ld ($-1),a
  375.          ;add a,a
  376.          ;add a,a
  377.          ;add a,a
  378.          ;ld (imer_curscreen_value),a
  379.         ret
  380.        
  381. changescrpg
  382.         ;jr $
  383.         call changescrpg_current
  384.         ;ld (curscrnum_physical),a
  385.         ld e,a
  386.         OS_SETSCREEN
  387.         ret
  388.  
  389. openfile_skipbmpheader
  390.         OS_OPENHANDLE
  391.         push bc
  392.         ld de,bmpbuf;0x4000 ;addr
  393.         ld hl,14+2;0x0076 ;size
  394.         OS_READHANDLE ;b=handle
  395.         pop bc
  396.         push bc
  397.         ld de,bmpbuf;0x4000 ;addr
  398.         ld hl,(bmpbuf+14)
  399.         dec hl
  400.         dec hl
  401.         OS_READHANDLE ;b=handle
  402.         pop bc
  403.         push bc
  404.         ld de,bmpbuf;0x4000 ;addr
  405.         ld hl,4*16;0x0076 ;size
  406.         OS_READHANDLE ;b=handle
  407.         pop bc
  408.         ret
  409.  
  410. ldpgrecodebmp
  411.         push bc
  412.         OS_NEWPAGE
  413.         ld a,e
  414.         SETPG4000
  415.         pop bc ;b=handle
  416.         push de
  417.        
  418.         ld de,0x4000 ;addr
  419.         ld hl,0x4000 ;size
  420.         OS_READHANDLE
  421.  
  422.         ld hl,0x4000
  423.         ld d,trecolor/256
  424. gettexpgsrecode0
  425.         ld e,(hl)
  426.         ld a,(de)
  427.         ld (hl),a
  428.         inc hl
  429.         bit 7,h
  430.         jr z,gettexpgsrecode0
  431.  
  432. ;яютхЁэєЄ№ ЄхъёЄєЁ√ эр 90 уЁрфєёют (фы  ёЄхэ, р фы  ёяЁрщЄют яЁюёЄю яхЁхтхЁэєЄ№?)
  433. ;1. яхЁхтюЁюЄ ЄхъёЄєЁ
  434.         ld hl,0x4000
  435.         ld de,0x4000+0x3f00
  436.         ld b,32
  437. gettexpgsturn0
  438. gettexpgsturn1
  439.         ld c,(hl)
  440.         ld a,(de)
  441.         ld (hl),a
  442.         ld a,c
  443.         ld (de),a
  444.         inc l
  445.         inc e
  446.         jr nz,gettexpgsturn1
  447.         inc h
  448.         dec d
  449.         djnz gettexpgsturn0
  450.        
  451.         pop de ;e=pg
  452.         ret
  453.  
  454. shutay
  455.         ld de,0xe00
  456. shutay0
  457.         dec d
  458.         ld bc,0xfffd
  459.         out (c),d
  460.         ld b,0xbf
  461.         out (c),e
  462.         jr nz,shutay0
  463.         ret
  464.        
  465. texfilename
  466.         if TEXBMP
  467.         db "wolftex.bmp",0
  468.         else
  469.         db "wolftex.0",0
  470. texfilenamenum=$-2
  471.         endif
  472. sprfilename
  473.         db "wolfspr.bmp",0
  474.  
  475.         align 256
  476. t1x
  477.         db 255
  478.         dup 255
  479.         db (255*2/($&0xff)+1)/2
  480.         edup
  481. ttexpgs
  482.         ds NTEXPGS+NSPRPGS
  483.  
  484. setpgmap4000
  485. pgmapnum=$+1
  486.         ld a,0
  487.         SETPG4000
  488.         ret
  489.  
  490. swapimer
  491.         di
  492.          ld hl,(0x0026) ;ok
  493.          ld (on_int_0026),hl
  494.         ld de,0x0038
  495.         ld hl,oldimer
  496.         ld bc,3
  497. swapimer0
  498.         ld a,(de)
  499.         ldi ;[oldimer] -> [0x0038]
  500.         dec hl
  501.         ld (hl),a ;[0x0038] -> [oldimer]
  502.         inc hl
  503.         jp pe,swapimer0
  504.         ei
  505.         ret
  506. oldimer
  507.         jp on_int ;чрьхэшЄё  эр ъюф шч 0x0038
  508.         jp 0x0038+3
  509.  
  510. on_int
  511. ;restore stack with de
  512.         ld (on_int_hl),hl
  513.         ld (on_int_sp),sp
  514.         pop hl
  515.         ld (on_int_sp2),sp
  516.         ld (on_int_jp),hl
  517.         ld sp,INTSTACK
  518.         push af
  519.         push bc
  520.         push de
  521.  
  522. ;imer_curscreen_value=$+1
  523. ;         ld a,0
  524. ;         ld bc,0x7ffd
  525. ;         out (c),a
  526.  
  527.         ex de,hl;ld hl,0
  528. on_int_sp=$+1
  529.         ld (0),hl ;тюёёЄрэютшыш чряюЁюЄ√щ ёЄхъ
  530.  
  531. on_int_0026=$+1
  532.         ld hl,0
  533.         ld (0x0026),hl ;тюёёЄрэютшыш чряюЁюЄ√щ ёЄхъ 0x0028 (=40)
  534.  
  535.         push ix
  536.         push iy
  537.         ex af,af' ;'
  538.         exx
  539.         push af
  540.         push bc
  541.         push de
  542.         push hl
  543.         ld a,(curscrnum)
  544.         ld e,a
  545.         OS_SETSCREEN ;т√ч√трхь чфхё№, р эх т Ёрэфюьэюь ьхёЄх, шэрўх фрцх ё юфэющ чрфрўхщ ьюцхь яюыєўшЄ№ эхяЁхфёърчєхьє■ чрфхЁцъє, ъюЄюЁє■ эх ЇшъёшЁєхЄ эр° ЄрщьхЁ? ё эхёъюы№ъшьш чрфрўрьш эрфю єўшЄ√трЄ№ ш ёшёЄхьэ√щ - TODO
  546.        
  547.         if atm
  548.        
  549. curpalette=$+1
  550.         ld de,wolfpal
  551.         OS_SETPAL
  552.        
  553.        if 1==0
  554.         ld a,(curpg32klow) ;ok
  555.         push af
  556. pgmuznum=$+1
  557.         ld a,0
  558.         SETPG8000
  559.         call muz+6
  560.         ;TODO music + sound effects in OS_SETMUSIC
  561.         pop af
  562.         SETPG8000
  563.        endif
  564.        
  565.         call oldimer ;ei
  566.        
  567.         GET_KEY
  568.         or a
  569.         jr z,$+5
  570.         ld (curkey),a
  571.        
  572.         else
  573. curpg=$+1
  574.         ld a,0
  575.         setpgafast
  576.         endif
  577.        
  578.         pop hl
  579.         pop de
  580.         pop bc
  581.         pop af
  582.         exx
  583.         ex af,af' ;'
  584.         pop iy
  585.         pop ix
  586.        
  587.         ld hl,(timer)
  588.         inc hl
  589.         ld (timer),hl
  590.  
  591.         pop de
  592.         pop bc
  593.         pop af
  594.        
  595. on_int_hl=$+1
  596.         ld hl,0
  597. on_int_sp2=$+1
  598.         ld sp,0
  599.         ;ei
  600. on_int_jp=$+1
  601.         jp 0
  602.  
  603. sfxplay
  604.         push af
  605. pgsfx=$+1
  606.         ld a,0
  607.         SETPG8000
  608.         pop af
  609.         jp 0x8000 ;SFXPLAY
  610.  
  611. loadpage
  612. ;чрърч√трхЄ ёЄЁрэшўъє ш уЁєчшЄ Єєфр Їрщы (шь  Їрщыр т hl)
  613. ;out: hl=яюёых шьхэш Їрщыр, a=pg
  614.         push hl
  615.         OS_NEWPAGE
  616.         pop hl
  617.         ld a,e
  618.         push af ;pg
  619.         SETPGC000
  620.         push hl
  621.         ex de,hl
  622.         OS_OPENHANDLE
  623.         push bc
  624.         ld de,0xc000 ;addr
  625.         ld hl,0x4000 ;size
  626.         OS_READHANDLE
  627.         pop bc
  628.         OS_CLOSEHANDLE                
  629.         pop hl
  630.         ld b,1
  631.         xor a
  632.         cpir ;after 0
  633.         pop af ;pg
  634.         ret
  635.  
  636. muzfilename
  637.         db "sfx.bin",0
  638.         db "music.bin",0
  639.  
  640. wolfpal
  641.         dw 0xffff,0x0c0c,0x3f3f,0xdede,0xfefe,0xdfdf,0x4c4c,0xaeae
  642.         dw 0xbdbd,0xfdfd,0xbfbf,0xeded,0x8d8d,0x7d7d,0xecec,0x1f1f
  643.  
  644.         include "WATM2.asm"
  645.  
  646. scale2ytop
  647. ;bc=scale
  648. ;out: de=Y, lx=y
  649.         XOR A
  650.         LD L,A
  651.         ld H,A
  652.         SBC HL,BC ;-scale = -0x40..-0x410
  653.         ADD HL,HL
  654.         ADD HL,HL
  655.         ADD HL,HL
  656.         ADD HL,HL
  657.         ADD HL,HL ;*32 = -0x800..-0x8200
  658.         EXD
  659.         LD LX,E
  660.         LD a,D
  661.         LD D,-1
  662.         ADD A,Ycenter ;0x64
  663.         LD E,A
  664.         ret nc ;jr NC,$+3
  665.         INC D
  666.         ret
  667.  
  668. YtoADDR
  669.        PUSH HL
  670.         LD H,D
  671.         ld L,E
  672.         ADD HL,HL
  673.         ADD HL,HL
  674.         ADD HL,DE ;*5
  675.         ADD HL,HL
  676.         ADD HL,HL
  677.         ADD HL,HL ;*40
  678.         LD DE,scrbase
  679.         ADD HL,DE
  680. ;genX=$+1
  681. ;        LD DE,0
  682. ;        ADD HL,DE
  683.         EXD
  684.        POP HL
  685.         RET
  686.         ;align 256;DS .(-$)
  687. tscales
  688.        IF customscales == 0
  689.         INCBIN "scalesw3" ;ёэрўрыр ьхыъшх
  690.        ELSE
  691.         DS 8,5,0
  692.         DS 7,6,0
  693.         DS 6,7,0
  694.         DS 5,8,0
  695.         DS 4,9,0
  696.         DS 3,10,0
  697.         DS 2,11,0
  698.         DS 1,12,0
  699.         DS 1,13,0
  700.         DS 1,14,0
  701.         DS 1,15,0
  702.         DS 1,16,0
  703.         DS 1,17,0
  704.         DS 1,18,0
  705.         DS 1,19,0
  706.         DS 1,20,0
  707.         DS 1,21,0
  708.         DS 1,22,0
  709.         DS 1,23,0
  710.         DS 1,24,0
  711.         DS 1,25,0
  712.         DS 1,26,0
  713.         DS 1,27,0
  714.         DS 1,28,0
  715.         DS 1,29,0
  716.         DS 1,30,0
  717.         DS 1,31,0
  718.         DS 1,32,0
  719.         DS 1,33,0
  720.         DS 1,34,0
  721.         DS 1,35,0
  722.         DS 1,36,0
  723.         DS 1,38,0
  724.         DS 1,40,0
  725.         DS 1,42,0
  726.         DS 1,44,0
  727.         DISPLAY $-tscales,"=#80"
  728.        ENDIF
  729. tscales_rev
  730.         ds 128
  731.  
  732. tsprites
  733. ;pg,xmid,xleft-1,xright-1
  734.         macro TSPRITES pg,xleft,wid
  735. xright=xleft+wid
  736. xmid=(xleft+xright)/2
  737.         db NTEXPGS+pg
  738.         db xmid/2
  739.         db xleft/2
  740.         db xright/2
  741.         endm
  742. ;TODO эрфю яЁртшы№эю ЎхэЄЁютрЄ№
  743.         ;TSPRITES 0,0,0 ;ID 0 not used
  744.         TSPRITES 0,0,44 ;ID 1
  745.         TSPRITES 0,44,42
  746.         TSPRITES 0,86,36
  747.         TSPRITES 0,122,56
  748.         TSPRITES 0,178,40
  749.         TSPRITES 0,218,48
  750.         TSPRITES 0,266,36
  751.         TSPRITES 0,302,56
  752.         TSPRITES 0,358,38
  753.         TSPRITES 0,396,50 ;10
  754.         TSPRITES 0,448,24
  755.         TSPRITES 1,472,26
  756.  
  757. MONSTAB
  758. ;ZOMBIEMAN stay
  759.         db 1
  760.         db 2
  761.         db 1
  762.         db 2
  763.         db 1
  764.         db 2
  765.         db 0,0
  766. ;ZOMBIEMAN go1
  767.         db 3
  768.         db 4
  769.         db 5
  770.         db 6
  771.         db 3
  772.         db 4
  773.         db 0,0
  774. ;ZOMBIEMAN go2
  775.         db 7
  776.         db 8
  777.         db 9
  778.         db 10
  779.         db 7
  780.         db 8
  781.         db 0,0
  782. ;AMMO
  783.         db 12 ;G
  784.         db 12 ;R
  785.         db 12 ;MEGAHEALTH
  786.         db 12 ;RL
  787.         db 12 ;AMMO
  788.         db 12
  789.         db 0,0
  790. ;STOLB
  791.         db 11
  792.         db 11
  793.         db 11
  794.         db 11
  795.         db 11
  796.         db 11
  797.         db 11
  798.         db 11
  799.  
  800.         if 1==0
  801.         DS ((-$)&7)&0xff
  802. MONSTRS
  803. ;Xx,Yy,TYPEphase,TIMEenergy
  804.         DW #0F80,#AF80,#000,-1;ENEMY
  805.         DW #2680,#A080,#000,64
  806.         DW #0380,#BA80,#000,64
  807.         DW #0780,#B780,#000,64
  808.  
  809.         DW #0F80,#B080,#002,64
  810.         DW #1380,#A080,#000,64
  811.         DW #1380,#AA80,#000,64
  812.         DW #1380,#B280,#000,64
  813.         DW #1380,#B380,#000,64
  814.         DW #1280,#B580,#002,64
  815.         DW #1480,#AB80,#000,64
  816.         DW #1480,#AE80,#002,64
  817.  
  818.         DW #1480,#B080,#002,64
  819.         DW #1480,#B380,#000,64
  820.         DW #1580,#A180,#002,80
  821.         DW #1680,#AD80,#002,90
  822.         DW #1680,#B180,#002,100
  823.         DW #2180,#AD80,#002,10
  824.         DW #2380,#A080,#000,50
  825.         DW #2380,#A580,#002,50
  826.  
  827.         DW #2680,#A480,#003,50
  828.         DW #2680,#B280,#004,50
  829.         DW #2780,#A880,#005,50
  830.         DW #2780,#B180,#003,64
  831.  
  832.         DW #2780,#A380,#100,150
  833.         DW #2080,#A580,#101,100
  834.         DW #2280,#A580,#102,100
  835.         DW #2580,#A080,#103,20
  836.         DW #2080,#A080,#104,40
  837.  
  838.         DW #1380,#A2C0,#200,0
  839.         DW #1380,#A440,#200,0
  840.         DW #1280,#A2C0,#200,0
  841.         DW #1280,#A440,#200,0
  842.         DW #1180,#A2C0,#200,0
  843.         DW #1180,#A440,#200,0
  844.         DW #1080,#A2C0,#200,0
  845.         DW #1080,#A440,#200,0
  846.         DW #0F80,#A2C0,#200,0
  847.         DW #0F80,#A440,#200,0
  848.         DW #0E80,#A2C0,#200,0
  849.         DW #0E80,#A440,#200,0
  850.         DW #0D80,#A2C0,#200,0
  851.         DW #0D80,#A440,#200,0
  852.         DW -1
  853. eNDMONS
  854.         endif
  855.  
  856. level
  857.         DB "W"
  858. gfxnr   DB "0"
  859. muznr   DB "A"
  860. pol     DB #E7
  861. potolok DB #F3
  862. color   DB 7
  863. levname DS 23
  864.         DB 0
  865. monstrs DB 0
  866. prizes  DW 0 ;$$$/10
  867. EXITx   DB 23
  868. EXITy   DB 15+0xA0
  869. yx      DW 0x8080
  870. YX      DW 0xBA08
  871. angle   DW 64
  872. endlev
  873.  
  874.         DS ((-$)&7)&0xff
  875. MONSTRS
  876. ;Xx,Yy,TYPEphase,TIMEenergy
  877.         ;DW -1
  878.  
  879. ;ёхщўрё TYPE ъюфшЁєхЄё  Єръ (ўЄю тшфэю т ЁхфръЄюЁх: ўЄю т TYPE):
  880. ;31: тїюф
  881. ;29: т√їюф
  882. ;32..63: goods (58..63: gold 5,10,20,50,100,200)
  883. ;1..28: monsters
  884.  
  885. ;        ds 64
  886. ;INTSTACK
  887.  
  888.         align 256
  889. trecolor
  890. ;%00003210 => %.3...210
  891.         dup 256
  892. _3=$&8
  893. _210=$&7
  894. _3L=($>>4)&8
  895. _210L=($>>4)&7
  896.         db (_3L*0x08) + (_210L*0x01) + (_3*0x10) + (_210*0x08)
  897.         edup
  898.  
  899. bmpbuf
  900.  
  901.         display "free before stack=",0x3e00-$
  902.  
  903.         ds 0x8000-$
  904.  
  905.        IF atm
  906.         ;ORG #C000;,pgscalers
  907.         ;ds 0xc000-$
  908.         ;INCBIN "scalers"
  909. wasmuz
  910.         ;ds 9,201
  911.         incbin "DOOM-MUS" ;TODO load
  912. wasmuz_sz=$-wasmuz
  913.  
  914.         include "genscale.asm"
  915.  
  916.         display "WASMAP=",$
  917. WASMAP
  918.         INCBIN "mapatm.E" ;TODO load
  919. szMAP=$-WASMAP
  920.  
  921. res_path
  922.         defb "wolf3d",0
  923.      
  924.  
  925.        else ;~atm
  926. WASMAP
  927.         INCBIN "map48.E"
  928. szMAP=$-WASMAP
  929.         ;ORG #C000,pgscale
  930.         ds 0xc000-$
  931.       IF 1
  932.         INCBIN "48kblock" ;with 48K textures
  933.       ELSE
  934.        IF scale64
  935.        IF scale64 == 3
  936.         INCBIN "tscale3"
  937.        ELSE
  938.         INCBIN "tscale2"
  939.        ENDIF
  940.        ELSE
  941.         INCBIN "tscale"
  942.        ENDIF
  943.       ENDIF
  944.        ENDIF
  945. end
  946.  
  947.         ;display "End=",end
  948.         ;display "Free after end=",/d,#c000-end
  949.         ;display "Size ",/d,end-begin," bytes"
  950.        
  951.         savebin "wolf3d.com",begin,end-begin
  952.        
  953.         LABELSLIST "../../../us/user.l"
  954.