?login_element?

Subversion Repositories NedoOS

Rev

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

  1.         DEVICE ZXSPECTRUM128
  2.         include "settings.asm"
  3.  
  4. music=doublescr
  5.  
  6. NTEXPGS=0
  7. ;curpg=0x5b5c
  8.  
  9. pgtmp=#04
  10. pgmusic=#06
  11.  
  12. texturesinpg=12
  13. spritesinpg=8;4
  14.  
  15. ;tcos=#5B00
  16. imer=#7F7F
  17. INTSTACK=imer
  18. imstackbegin=imer&0xff00
  19. distbuf=#7C00 ;#300 ;ID,texx,dist
  20.  
  21.         page 0
  22.         ORG #6000;,0
  23. begin
  24.         jp init
  25.        IF doublescr
  26. SETPGmusic_silent
  27.         ld a,pgmusic
  28.         jr SETPG_silent
  29. SETPG
  30.         LD (curpg),A
  31. SETPG_silent
  32. curscr=$+1
  33.         OR 0
  34.         LD BC,#7FFD
  35.         OUT (C),A
  36.         RET
  37.        ENDIF
  38.  
  39.         include "my_int.asm"
  40.         INCLUDE "WCTRL.ASM"
  41.  
  42.         include "beeper.asm"
  43.         include "beeper_sfxdata.asm"
  44.         include "anims.asm"
  45.         include "savestate.asm"
  46.  
  47. ;переменные рендера (обновляются в начале рендера)
  48. curXx
  49. curx    DB #80
  50. curX    DB #0
  51. curYy
  52. cury    DB #80
  53. curY    DB #0
  54. curxy   DW 0
  55. curyx   DW 0
  56. curYX   DW 0
  57. curangle
  58.         DW tsin
  59.        if 0
  60. demobegin
  61.        IF demoplay
  62.         INCBIN "demorec*"
  63.        ELSE
  64.         DB %00111111 ;all keys released
  65.        ENDIF
  66.        endif
  67.  
  68.         align 256
  69. tlogd2sca
  70.        IF scale64
  71.        IF scale64 == 3
  72.         INCBIN "logd2sc3"
  73.        ELSE
  74.         INCBIN "logd2sc2"
  75.        ENDIF
  76.        ELSE
  77.         INCBIN "logd2sc_"
  78.        ENDIF
  79. tsqr2
  80.         INCBIN "sqr2int"
  81. tlogd
  82.         INCBIN "logd" ;первые 128 байт (64 при antizalom) не используются - TODO
  83. tcorrlogd
  84.         INCBIN "corlogd_"
  85.         ORG $-256
  86.        DUP 256
  87.         DB {$+(scrtopx*8)}&0xff
  88.        EDUP
  89.        IF lores
  90.         ORG $-256
  91. _=$
  92.        DUP 128
  93.         DB {_}&0xff
  94. _=_+2
  95.        EDUP
  96.         DS 128
  97.        ENDIF
  98. tcos
  99.         DS 256
  100. tlogcos
  101.         INCBIN "pluslcos"
  102. tda
  103.         INCBIN "da"
  104.         ORG $-256
  105.        DUP 256
  106.         DB 0xff&({$}+128)
  107.        EDUP
  108.         ORG $-256
  109.        DUP 256
  110.         DB 0xff&({$+(scrtopx*8)})
  111.        EDUP
  112.        IF lores
  113.         ORG $-256
  114. _=$
  115.        DUP 128
  116.         DB {_}&0xff
  117. _=_+2
  118.        EDUP
  119.         DS 128
  120.        ENDIF
  121. tctg
  122.         INCBIN "plusctg"
  123. tsin
  124.         INCBIN "sin"
  125. cursprites
  126.         DS 256
  127.  
  128.         DISPLAY "tables end=",$
  129. tscalesw3
  130.         incbin "scalesw3"
  131.  
  132.  
  133.         ;DS #8000-$
  134.  
  135.         ds imstackbegin-$
  136.         ds imer-$
  137.         include "int.asm"
  138.  
  139.         ;DS ((IMER/256+1)<<8)-$
  140.         ;ds (IMER&0xff00)-$
  141.  
  142.         ds 0x8000-$ ;ORG #8000
  143. imvec
  144.         DS 257,imer&0xff
  145.  
  146.         INCLUDE "zxloop.asm"
  147.         INCLUDE "WSCAN10.asm"
  148.         INCLUDE "WREND.asm"
  149.  
  150. badmonstexture
  151.         db 0xc0,0xff
  152.  
  153.         align 256
  154. t1x
  155.         db 255
  156.         dup 255
  157.         db (255*2/($&0xff)+1)/2
  158.         edup
  159.  
  160.         DISPLAY "48K PROG END=",$
  161.  
  162.         ORG distbuf
  163.         include "recmap.asm"
  164.  
  165.         DS distbuf+#300-$
  166.  
  167. ;;;;;
  168.         ORG scrbuf
  169. GO
  170.         ;xor a
  171.         ;out (0xfe),a
  172.         DI
  173.         LD HL,WAStcos
  174.         LD DE,tcos
  175.        PUSH DE
  176.         LD BC,256
  177.         LDIR
  178.        POP HL
  179. REtcos0
  180.        DUP 2;4
  181.         SRA (HL)
  182.        EDUP
  183.         INC L
  184.         jr nz,REtcos0
  185.  
  186.         LD HL,imvec
  187.         LD DE,imvec+1
  188.         LD (HL),imer/256
  189.         LD B,E,C,L
  190.         LD A,H
  191.         LDIR
  192.         LD I,A
  193.         IM 2
  194.         EI
  195.        HALT
  196.         LD HL,-2
  197.         ADD HL,SP
  198.         LD (clscrbufsp),HL
  199.         LD (eorfillsp),HL
  200.         ld hl,ZXLOOP
  201.         push hl
  202.         LD BC,#FBDF
  203.         IN A,(C)
  204.         LD (mouseoldx),A       
  205.         JP RECMAP ;->ZXLOOP
  206.        
  207.         display "ZXLOOP=",ZXLOOP
  208.  
  209. WASMAP
  210.        IF invmap;atm
  211.         INCBIN "mapatm.E"
  212.        ELSE
  213.         INCBIN "map48.E"
  214.        ENDIF
  215. szMAP=$-WASMAP
  216.  
  217. WAStcos
  218.         INCBIN "cos"
  219. init
  220.         if mouse
  221.         call initmouse
  222.         endif
  223. ;prepare 48K block
  224.         DI ;IY
  225.         LD HL,#5800
  226.         LD DE,#5801
  227.         LD BC,767
  228.         LD (HL),L
  229.         LDIR
  230.         call gettexpg
  231.        if doublescr        
  232.        LD A,0x10+pgtmp
  233.        call SETPG
  234.         call gettexpg
  235.        endif
  236.        IF music && !atm
  237.         call SETPGmusic_silent
  238.         CALL #c000 ;init mus
  239.        ENDIF
  240.        if doublescr        
  241.        LD A,0x10
  242.        call SETPG
  243.        endif
  244.         LD IY,23610
  245.         EI
  246.        JP GO ;там recmap
  247.        
  248. gettexpg
  249.         ld hl,wasgoods
  250.         ld de,0x4000
  251.         ld bc,0x1000
  252.         ldir
  253.         ld de,0xb000
  254.         ld bc,0x1000
  255.         ldir
  256.         ld hl,0xffff-0x2000
  257.         ld de,0xffff
  258.         ld bc,0x2000
  259.         lddr
  260.         LD HL,0x2000+waswalls;#C000
  261.         call copyscrcolumns_2k
  262.         LD DE,#C000+0x80;maxscale+1
  263.        LD HY,d;0xc0;#FE
  264. ;4 upper textures = #09A6
  265. ;4 lower textures = #0AAC
  266.         LD HL,0x5000
  267.         CALL GETTEX
  268.         CALL GETTEX
  269.         CALL GETTEX
  270.         CALL GETTEX
  271.         LD HL,0x2000+waswalls+0x800;#C000
  272.         call copyscrcolumns_2k
  273.         LD HL,0x5000
  274.         CALL GETTEX
  275.         CALL GETTEX
  276.         CALL GETTEX
  277.         CALL GETTEX
  278.         LD HL,0x2000+waswalls+0x1000;#C000
  279.         call copyscrcolumns_2k
  280.         LD HL,0x5000
  281.         CALL GETTEX
  282.         CALL GETTEX
  283.          CALL GETTEX
  284.          CALL GETTEX
  285.         ;walls: [e2b8] (e3b4 8spr, e274 4spr?), walls2: (eef6 8spr, ec88 4spr?)
  286.         ;LD HL,wasgoods
  287.         ;call copyscrcolumns_4k
  288.       if sprites
  289.        LD HL,0x4000
  290.        CALL GETSPR
  291.        LD HL,0x4400
  292.        CALL GETSPR
  293.        LD HL,0x4800
  294.        CALL GETSPR
  295.        LD HL,0x4c00
  296.        CALL GETSPR
  297.         ;LD HL,wasgoods+0x1000;#C000
  298.         ;call copyscrcolumns_4k
  299.         ;jr $
  300.       if spritesinpg==8
  301.        LD HL,0xb000
  302.        CALL GETSPR
  303.        LD HL,0xb400
  304.        CALL GETSPR
  305.        LD HL,0xb800
  306.        CALL GETSPR
  307.        LD HL,0xbc00
  308.        CALL GETSPR
  309.       endif
  310.       endif
  311.         ;jr $ ;walls: с оптимизацией f699(f4c0) (12 шт+4 спрайта без оптимизации(с оптимизацией)), (fdbd 8spr, fb6f 4spr?) walls2: 00f4(febd), (0cc0 8spr, 07d6 4spr?)
  312.         ;jr $ ;пак 7: с оптимизацией de=ec70[ebdf] (f4c8 12 шт)
  313.         ;jr $ ;пак 3: с оптимизацией de=e1e4[de70]
  314.         ;jr $ ;пак 2: с оптимизацией de=f070[f6cd]
  315.         ;jr $ ;пак 1: с оптимизацией de=efdf[ef76, без оптимизации f256]
  316.        
  317.         if 1
  318. ;исправляем переполнения адресов текстур (адреса в ПЗУ заменяем на 0xc080, а для спрайтов на badmonstexture)
  319.         ld h,0xc0
  320. fixtexoverflow0
  321.         ld l,0x40
  322. fixtexoverflow1
  323.         ld e,(hl)
  324.         inc h
  325.         ld d,(hl)
  326.         bit 7,d
  327.         jr nz,$+5 ;не в ПЗУ
  328. badaddrpatch=$+1
  329.          ld de,0xc080
  330.         ld (hl),d
  331.         dec h
  332.         ld (hl),e
  333.         inc l
  334.         jp p,fixtexoverflow1
  335.         inc h
  336.         inc h
  337.         ld de,badmonstexture
  338.         ld a,h
  339.         cp 0xc0+(2*texturesinpg)
  340.         jr c,$+6
  341.          ld (badaddrpatch),de
  342.         cp 0xc0+(2*(texturesinpg+spritesinpg))
  343.         jr nz,fixtexoverflow0
  344.         endif
  345.  
  346. ;составляем таблицу масштабирования    
  347.         ld hl,tscalesw3
  348.         ld c,0
  349.         ld b,64
  350. initscales0
  351.         ld e,(hl)
  352.         inc hl
  353.         ld d,(hl)
  354.         inc hl
  355.         push hl
  356.         ld l,c
  357.         push bc
  358.         ld b,d
  359.         ld c,e ;adder 8.8
  360. ;надо из 0040...0400 сделать 78..00 до начала(0x80 -08..-80) = 0x80 - adder*32
  361. ;надо из 0040...0400 сделать 78..04 в начале (0x80 -08..-7c) = 0x80 - adder*31
  362. ;...
  363. ;надо из 0040...0400 сделать 87..f4          (0x80 +07..+74)
  364. ;надо из 0040...0400 сделать 88..f8 в конце  (0x80 +08..+78)
  365.         dup 5
  366.         sla e
  367.         rl d
  368.         edup
  369.         xor a
  370.         sub e
  371.         ld e,a
  372.         ld a,0x80
  373.         sbc a,d
  374.         ld d,a ;0x80 - adder*32
  375.         ld h,0xc0
  376.         ld (hl),0 ;зачем? при d виснет из-за спрайтов
  377.         inc h
  378. initscales1
  379.         ex de,hl
  380.         add hl,bc
  381.         ex de,hl
  382.         ld (hl),d ;Ys=(Y/32-1)*sc
  383.         inc h
  384.         jr nz,initscales1
  385.         pop bc
  386.         inc c
  387.         pop hl
  388.         djnz initscales0
  389.         LD H,#C1
  390. INIRETAB0 ;
  391.         LD L,0
  392.         LD B,maxscale+1
  393. INIRETAB1 ;
  394.         LD A,(HL)
  395.         CP 128-(scrhgtpix/2)
  396.         jr nc,$+4
  397.         LD A,128-(scrhgtpix/2)
  398.         CP 128+(scrhgtpix/2);-1
  399.         jr c,$+4
  400.        ;LD A,128+(scrhgtpix/2)-1 ;видно линию внизу от переполн-й
  401.        LD A,0xff&(dropline-(scrbuf+(scrhgtpix/2)-128))
  402.         ADD A,+(0xff&scrbuf)+(scrhgtpix/2)-128
  403.         LD (HL),A
  404.         INC L
  405.         DJNZ INIRETAB1
  406.         INC H
  407.         LD A,H
  408.         INC A ;#C0XX,#FFXX не трогаем
  409.         jr nz,INIRETAB0
  410.        LD HL,#FF00
  411.        LD DE,#FF01
  412.        LD BC,maxscale
  413.        LD (HL),1
  414.        LDIR
  415.         ret
  416.  
  417.         if mouse
  418. initmouse
  419.         ei
  420.         halt
  421.       ;задержка, чтобы мышка успевала опознаваться - min 2500 тактов для Evo (компа с 280к тактов быстродействия)
  422.       LD B,75
  423. prosirtime
  424.       LD DE,(0)        ;20 тактов
  425.       DJNZ prosirtime  ;13 тактов
  426.   ld a, 0x90
  427.   out (0x7F), a
  428.   out (0x5F), a
  429.   ld bc, 0x0FFDF
  430.   in h, (c)
  431.   ld b, 0x0FB
  432.   in l, (c)
  433.   dec b
  434.   in a, (c)
  435.   cp l
  436.   ret nz ;jr nz, @detected
  437.   cp h
  438.   ret nz ;jr z, @comeon
  439.         LD A,0xaf ;xor a
  440.         LD (mouseon),A
  441.         ;ld hl,0x18+(256*readmousejr) ;"jr"
  442.         ;ld (readmouse_patch),hl
  443.         ret
  444.         endif
  445.  
  446. copyscrcolumns_2k
  447.         push de
  448.         ld de,0x5000
  449.         ld bc,0x800
  450.         ldir
  451.         pop de
  452.         ret
  453.  
  454. GETTEX
  455.        IF scale64
  456.         LD LY,#40
  457.        ELSE
  458.         LD LY,#80
  459.        ENDIF
  460.         LD BC,#0880 ;B=width/8, C=#80(mask)
  461. GETTEX00 ;
  462.        PUSH BC
  463. GETTEX0
  464.         push hl
  465.         CALL GETTEXLINE
  466.         pop hl
  467.         INC LY
  468.        IF scale64 == 0
  469.        INC LY
  470.        ENDIF
  471.         RRC C
  472.         jr nc,GETTEX0
  473.         ;INC L
  474.         ld bc,64
  475.         add hl,bc
  476.        POP BC
  477.         DJNZ GETTEX00
  478.        inc hy,hy;DEC HY,HY
  479.         RET
  480.  
  481. GETSPR
  482.         ;jr $
  483.        IF scale64
  484.         LD LY,#40
  485.        ELSE
  486.         LD LY,#80
  487.        ENDIF
  488.         LD BC,#0880 ;B=width/8, C=#80(mask)
  489. GETSPR00 ;
  490.        PUSH BC
  491. GETSPR0
  492.         push hl
  493.         CALL GETSPRLINE
  494.         pop hl
  495.         INC LY
  496.        IF scale64 == 0
  497.        INC LY
  498.        ENDIF
  499.         RRC C
  500.         jr nc,GETSPR0
  501.         ;INC L
  502.         ld bc,128;64
  503.         add hl,bc
  504.        POP BC
  505.         DJNZ GETSPR00
  506.        inc hy,hy;DEC HY,HY
  507.         RET
  508.  
  509. GETTEXincD
  510.         call GETincD
  511.        JR GETTEXRETRY
  512.  
  513. GETTEXLINE
  514.        PUSH HL
  515. GETTEXRETRY ;
  516.        LD (gettexDE),DE ;linelength addr
  517.        POP HL
  518.        PUSH HL
  519.         LD (IY),E
  520.        IF scale64 == 0
  521.        LD (IY+1),E
  522.        ENDIF
  523.         INC HY
  524.         LD (IY),D
  525.        IF scale64 == 0
  526.        LD (IY+1),D
  527.        ENDIF
  528.         DEC HY
  529.        inc e
  530.        dec e
  531.        jr z,GETTEXincD
  532.         INC E
  533.         ;jr z,GETTEXincD
  534.         LD LX,0;C ;bit
  535.         LD HX,17 ;17-pixels
  536.         LD B,62 ;62..1 -> 1..62
  537. GETTEX1 ;
  538.         inc hl;CALL DHL
  539.         LD A,(HL)
  540.         AND C
  541.         CP LX
  542.         LD LX,A
  543.         jr z,GETTEXN
  544.        LD A,HX
  545.        OR A
  546.        jr z,GETTEXN ;can't add more pixels
  547.        inc e
  548.        dec e
  549.        jr z,GETTEXincD
  550.         LD A,tscale/256+63
  551.         SUB B
  552.         LD (DE),A
  553.         DEC HX ;17-pixels
  554.         INC E ;todo check before write
  555.         ;jr z,GETTEXiD
  556. GETTEXN ;
  557.         DJNZ GETTEX1   
  558.         LD A,HX ;17-pixels
  559.         ADD A,A
  560.         ADD A,A
  561.         ADD A,A
  562.         SUB HX  ;(17-pixels)*7
  563.        ADD A,DWJP&0xff
  564. gettexDE=$+1
  565.         LD (0),A
  566.         ld a,17+1
  567.         sub hx ;17+1-(17-pixels)
  568.         ld (gettexB),a ;size=1+pixels (min=2 из-за линии пола)
  569.        POP HL
  570.  
  571. GETTEX_cmp ;сравнение с предыдущими столбцами
  572.          push de
  573.          push iy
  574. GETTEX_cmpnext
  575.         ld hl,(gettexDE)
  576.         ld a,ly
  577.         cp 0x40 ;ниже этого tscales
  578.         jr nz,GETTEX_cmpgo
  579.         ld a,hy
  580.         cp 0xc0
  581.         jr z,GETTEX_endcmp
  582.         ld ly,0x80;7f
  583.         dec hy,hy
  584. GETTEX_cmpgo
  585.         dec ly
  586.         ld e,(iy)
  587.         inc hy
  588.         ld d,(iy)
  589.         dec hy
  590.         ;ld a,17+1
  591.         ;sub hx ;17+1-(17-pixels)
  592. gettexB=$+1
  593.         ld b,0;a ;size=1+pixels (min=2 из-за линии пола)
  594. GETTEX_cmp1
  595.         ld a,(de)
  596.         cp (hl)
  597.         jr nz,GETTEX_cmpnext
  598.         inc hl
  599.         inc de
  600.         djnz GETTEX_cmp1
  601. ;поставить ссылку на прошлую копию
  602.         ld e,(iy)
  603.         inc hy
  604.         ld d,(iy)
  605.          pop iy
  606.          pop af;de
  607.         LD (IY),e
  608.         INC HY
  609.         LD (IY),d
  610.         DEC HY
  611.         ld de,(gettexDE) ;откатить DE
  612.         ret
  613. GETTEX_endcmp
  614.          pop iy
  615.          pop de
  616.         RET
  617.  
  618. GETSPRincD
  619.         call GETincD
  620.         JR GETSPRRETRY
  621.  
  622. GETSPRLINE
  623.        PUSH HL
  624. GETSPRRETRY ;
  625.        LD (gettexDE),DE ;linelength addr
  626.        POP HL
  627.        PUSH HL
  628.         LD (IY),E
  629.        IF scale64 == 0
  630.        LD (IY+1),E
  631.        ENDIF
  632.         INC HY
  633.         LD (IY),D
  634.        IF scale64 == 0
  635.        LD (IY+1),D
  636.        ENDIF
  637.         DEC HY
  638.        ld a,l
  639.        add a,2*62
  640.        ld l,a ;line 62
  641.         LD HX,1
  642.         ld lx,2 ;size
  643. GETSPR1 ;
  644.         CALL FIND10
  645.         jr nc,GETSPRQ ;end of column
  646.        inc e
  647.        dec e
  648.        jr z,GETSPRincD
  649.         LD A,HX
  650.         CPL
  651.         LD (DE),A ;Y
  652.          inc lx
  653.         INC E
  654.         ;jr z,GETSPRiD
  655.         CALL FIND1HEIGHT
  656.        inc e
  657.        dec e
  658.        jr z,GETSPRincD
  659.         LD A,HX
  660.         CPL
  661.         LD (DE),A ;Y2
  662.          inc lx
  663.         INC E
  664.         ;jr z,GETSPRiD
  665.         CALL FIND0HEIGHT
  666.        inc e
  667.        dec e
  668.        jr z,GETSPRincD
  669.         LD A,HX
  670.         CPL
  671.         LD (DE),A ;Y3
  672.          inc lx
  673.         INC E
  674.         ;jr z,GETSPRiD
  675.         JR GETSPR1
  676. GETSPRQ
  677.        inc e
  678.        dec e
  679.        jr z,GETSPRincD
  680.         LD A,#C0
  681.         LD (DE),A
  682.         INC E
  683.         ;jr z,GETSPRiD
  684.        inc e
  685.        dec e
  686.        jr z,GETSPRincD
  687.         LD A,#FF
  688.         LD (DE),A
  689.         INC E
  690.         ;jr nz,$+5
  691.         ; INC D
  692.         ; LD E,maxscale+1
  693.        POP HL
  694.         ld a,lx
  695.         ld (gettexB),a
  696.        
  697.         jp GETTEX_cmp ;сравнение с предыдущими столбцами
  698.  
  699. GETincD
  700.         INC D
  701.        LD E,0x80;maxscale+1
  702.        ld a,d
  703.        cp 0xc0+(2*(texturesinpg+spritesinpg))
  704.        jr c,$+4;GETSPRRETRY
  705.        ld e,0x40 ;дальше нет таблиц адресов
  706.        ret
  707.  
  708. maxVhgt=12;14;10 ;при максимальном увеличении (в 4 раза) должно отрисовывать не более maxlinehgt=59 пикселей! (TODO почему 13,14 глючат???)
  709.  
  710. ;HX=V
  711. ;HL=mask
  712. FIND10
  713.         LD A,HX
  714.         CP 63
  715.         RET Z ;CY=0: end of column
  716.         CALL GETPIXEL
  717.         RET C ;CY=1: pixel
  718.         dec hl;CALL UHL
  719.          dec hl
  720.         INC HX ;V
  721.         JR FIND10
  722. FIND1HEIGHT
  723.        ;LD LX,HX ;oldV
  724.         LD B,0
  725. F1H0    CALL GETPIXEL
  726.         RET NC ;transparent
  727.         RET Z ;0
  728.         dec hl;CALL UHL
  729.          dec hl
  730.         INC HX ;V
  731.         INC B
  732.         LD A,B
  733.         CP maxVhgt
  734.         jr c,F1H0
  735.         RET
  736. FIND0HEIGHT
  737.        ;LD LX,HX ;oldV
  738.         LD B,0
  739. F0H0    CALL GETPIXEL
  740.         RET NC ;transparent
  741.         RET NZ ;1
  742.         dec hl;CALL UHL
  743.          dec hl
  744.         INC HX ;V
  745.         INC B
  746.         LD A,B
  747.         CP maxVhgt
  748.         jr c,F0H0
  749.         RET
  750.  
  751. GETPIXEL
  752.         LD A,HX
  753.         CP 63
  754.         RET Z ;CY=0: transparent
  755.         inc l;set 1,h;SET 3,L
  756.         LD A,(HL)
  757.         dec l;res 1,h;RES 3,L
  758.         AND C
  759.         RET NZ ;CY=0: transparent
  760.         LD A,(HL)
  761.         AND C
  762.         SCF ;CY=1: pixel (Z)
  763.         RET
  764.        
  765.         if 0
  766. UHL
  767.         LD A,H
  768.         DEC H
  769.         AND 7
  770.         RET NZ
  771.         LD A,L
  772.         SUB #20
  773.         LD L,A
  774.         RET C
  775.         LD A,H
  776.         ADD A,8
  777.         LD H,A
  778.         RET
  779.         endif
  780. ;endall
  781.         display "end init=",$
  782.  
  783.         DS 0xb000-$
  784.         DS #C000-$
  785.  
  786.         if 0
  787.         ;ORG #C000
  788.        IF scale64
  789.        IF scale64 == 3
  790.         INCBIN "tscale3"
  791.        ELSE
  792.         INCBIN "tscale2"
  793.        ENDIF
  794.        ELSE
  795.         INCBIN "tscale"
  796.        ENDIF
  797.         endif
  798.  
  799. ;hicode_begin
  800.         ;ds 0x10000-0x1800-0x0800-$ ;0xс040..7f содержит таблицы адресов текстуры (16 текстур?)
  801.         ds 0x10000-0x1800-0x2000-$ ;0xс040..7f содержит таблицы адресов текстуры (16 текстур?)
  802. waswalls
  803.         incbin "walls.bin"
  804. wasgoods
  805.         incbin "goods.bin"
  806. ;hicode_end
  807. end
  808.  
  809.         page pgtmp
  810.         org 0xc000
  811. hicode_begin
  812.         ds 0x10000-0x1800-0x2000-$
  813. ;waswalls
  814.         incbin "walls2.bin"
  815. ;wasgoods
  816.         incbin "goods2.bin"
  817. hicode_end
  818.  
  819.         page pgmusic
  820.         org 0xc000
  821. hicode2_begin
  822.         include "../../_sdk/ptsplay.asm"
  823. MDLADDR
  824.         incbin "testmusi.pt3"
  825. hicode2_end
  826.  
  827.         page 0
  828.        if doublescr
  829.         savebin "code.c",begin,end-begin
  830.         page pgtmp
  831.         savebin "hicode.c",hicode_begin,hicode_end-hicode_begin
  832.         page pgmusic
  833.         savebin "hicode2.c",hicode2_begin,hicode2_end-hicode2_begin
  834.        else
  835.         savebin "code.c",begin,hicode_end-begin
  836.        endif
  837.  
  838.         LABELSLIST "../../../us/user.l",1
  839.