?login_element?

Subversion Repositories NedoOS

Rev

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