?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.         DEVICE ZXSPECTRUM128
  2.         include "../../_sdk/sys_h.asm"
  3.  
  4. BINADDR=0x4000
  5.  
  6. scrbase=0x4000
  7. sprmaxwid=32
  8. sprmaxhgt=32
  9. scrwid=160 ;double pixels
  10. scrhgt=200
  11. clswid=40 ;*8
  12. clshgt=200
  13.  
  14. STACK=0x4000
  15. tempsp=0x3f06 ;6 bytes for prspr
  16. INTSTACK=0x3f00
  17.  
  18. SND_PAGE=0;(0^INVMASK)
  19. SPTBL_PAGE=1;(6^INVMASK)
  20. PAL_PAGE=2;(4^INVMASK)
  21.  
  22. SPBUF_PAGE0=3;(8^INVMASK)
  23. SPBUF_PAGE1=4;(9^INVMASK)
  24. SPBUF_PAGE2=5;(10^INVMASK)
  25. SPBUF_PAGE3=6;(11^INVMASK)
  26.  
  27. CC_PAGE1=7;(13^INVMASK)
  28. CC_PAGE2=8;(14^INVMASK)
  29. CC_PAGE3=9;(12^INVMASK)
  30.  
  31. GFX_PAGE=10;(16^INVMASK) ;и далее
  32.  
  33. IMG_LIST =0xd000;#1000
  34.  
  35. ;смещения в SND_PAGE
  36.  
  37. AFX_INIT =#4000
  38. AFX_PLAY =#4003
  39. AFX_FRAME=#4006
  40. PT3_INIT =#4009
  41. PT3_FRAME=#400c
  42. PT3_MUTE =#400f ;NEW for TFM
  43. TURBOFMON=#4012 ;NEW for TFM
  44.  
  45. MUS_COUNT=#49fe
  46. SMP_COUNT=#49ff
  47. SFX_COUNT=#5000
  48.  
  49. MUS_LIST =#4a00
  50. SMP_LIST =#4d00
  51. SFX_DATA =#5100
  52.  
  53.         macro MDebug color
  54.         push af
  55.         ld a,color
  56.         out (#fe),a
  57.         pop af
  58.         endm
  59.  
  60.         macro MSetShadowScreen
  61.         call setpgsscr40008000
  62.         endm
  63.  
  64.         macro MRestoreMemMap012
  65. ;TODO переделать на (pgmain4000) и т.п. (сейчас с пересчётом по таблице)
  66.         ld a,CC_PAGE3
  67.         call setpgc000;SETPG32KHIGH
  68.         ld a,CC_PAGE1
  69.         call setpg4000;SETPG16K
  70.         ld a,CC_PAGE2
  71.         call setpg8000;SETPG32KLOW
  72.         endm
  73.  
  74.         macro MRestoreMemMap12
  75.         ld a,CC_PAGE1
  76.         call setpg4000;SETPG16K
  77.         ld a,CC_PAGE2
  78.         call setpg8000;SETPG32KLOW
  79.         endm
  80.  
  81.         org PROGSTART
  82. begin
  83.         ld sp,STACK
  84.         OS_HIDEFROMPARENT
  85.  
  86. ;        ld b,25
  87. ;waitcls0
  88. ;        push bc
  89. ;        YIELD
  90. ;        pop bc
  91. ;        djnz waitcls0 ;чтобы nv не перехватил фокус при вызове через комстроку
  92.  
  93.         ld e,0+128 ;+128=keep
  94.         OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
  95.         ld e,0
  96.         OS_SETSCREEN
  97.         ld e,0 ;color byte
  98.         OS_CLS
  99.         ld e,1
  100.         OS_SETSCREEN
  101.         ld e,0 ;color byte
  102.         OS_CLS
  103.        
  104.         OS_GETMAINPAGES
  105. ;dehl=номера страниц в 0000,4000,8000,c000
  106.         ld a,e
  107.         LD (pgmain4000),A
  108.         ld (tpages+CC_PAGE1),a
  109.         ld a,h
  110.         LD (pgmain8000),A
  111.         ld (tpages+CC_PAGE2),a
  112.         ld a,l
  113.         ld (tpages+CC_PAGE3),a
  114.         call setpgsmain40008000 ;записать в curpg...
  115.  
  116.         ld de,res_path
  117.         OS_CHDIR
  118.  
  119.         ld de,fnaddr
  120.         OS_OPENHANDLE
  121.         push bc
  122.         ld de,jpaddr ;addr
  123.         ld hl,2 ;size
  124.         OS_READHANDLE
  125.         pop bc
  126.         OS_CLOSEHANDLE
  127.  
  128.         ld hl,sndfilename
  129.         call loadpage ;CY=error
  130.         ld (tpages+0),a
  131.         ld hl,sprtblfilename
  132.         call loadpage ;CY=error
  133.         ld (tpages+1),a
  134.         ld hl,palfilename
  135.         call loadpage ;CY=error
  136.         ld (tpages+2),a
  137.  
  138.         ld de,tpages+GFX_PAGE
  139.  
  140.         ;ld b,NUMBER_OF_PAGES
  141. loadloop0
  142.         ;push bc
  143.         push de
  144.         ld hl,texfilename
  145.         call loadpage ;CY=error
  146.         pop de
  147.        jr c,loadloop0q
  148.         ld (de),a
  149.         inc e
  150.         ld hl,texfilename_pgnumend
  151. loadloop_nextdigit0
  152.         dec hl
  153.         ld a,(hl)
  154.         inc a
  155.         cp "0"+10
  156.         ld (hl),"0"
  157.         jr z,loadloop_nextdigit0
  158.         ld (hl),a
  159.         jr loadloop0
  160.         ;pop bc
  161.         ;djnz loadloop0
  162. loadloop0q
  163.        
  164.         ld hl,tpages+SPBUF_PAGE0
  165.         ld b,4
  166. mkpages0
  167.         push bc
  168.         push hl
  169.         OS_NEWPAGE
  170.         pop hl
  171.         ld (hl),e
  172.         inc l
  173.         pop bc
  174.         djnz mkpages0
  175.  
  176.         call initsfx
  177.  
  178.         call swapimer
  179.  
  180.         call setpgsmain40008000
  181.         call RestoreMemMap3
  182.         ld de,fnbin
  183.         ld hl,0x4000
  184.         call loadbinpg
  185.         ld de,fnbin2
  186.         ld hl,0x8000
  187.         call loadbinpg
  188.         ld de,fnbin3
  189.         ld hl,0xc000
  190.         call loadbinpg
  191.        
  192.         ld de,CURPAL
  193.         OS_SETPAL
  194.  
  195.         call _swap_screen
  196. jpaddr=$+1
  197.         call 0
  198.  
  199. quit ;TODO
  200.         call swapimer
  201.         call _music_stop
  202.         halt
  203.         QUIT
  204.  
  205.         ds 0x0200-$
  206. tpages
  207.         ds 256 ;pages
  208.  
  209. loadbinpg
  210.         push hl
  211.         OS_OPENHANDLE
  212.         pop de ;addr
  213.         push bc
  214.         ld hl,-BINADDR ;size
  215.         OS_READHANDLE
  216.         pop bc
  217.         OS_CLOSEHANDLE                
  218.         ret
  219.  
  220. loadpage
  221. ;заказывает страничку и грузит туда файл (имя файла в hl)
  222. ;out: hl=после имени файла, a=pg
  223. ;or else CY
  224.         push hl
  225.         ex de,hl
  226.         OS_OPENHANDLE
  227.         pop hl
  228.         or a
  229.         scf
  230.         ret nz
  231.         push hl
  232.        push bc
  233.         OS_NEWPAGE
  234.        pop bc
  235.         pop hl
  236.         ld a,e
  237.         push af ;pg
  238.        push bc
  239.         SETPGC000
  240.        pop bc
  241.         push hl
  242.         ex de,hl
  243.         ;OS_OPENHANDLE
  244.         push bc
  245.         ld de,0xc000 ;addr
  246.         ld hl,0x4000 ;size
  247.         OS_READHANDLE
  248.         pop bc
  249.         OS_CLOSEHANDLE                
  250.         pop hl
  251.         ld b,1
  252.         xor a
  253.         cpir ;after 0
  254.         pop af ;pg
  255.         or a ;CY=0
  256.         ret
  257.  
  258. CURPAL
  259. ;DDp palette: %grbG11RB(low),%grbG11RB(high), инверсные
  260.         STANDARDPAL
  261.  
  262. sndfilename
  263.         db "page_0.bin",0
  264. sprtblfilename
  265.         db "page_1.bin",0
  266. palfilename
  267.         db "page_2.bin",0
  268.  
  269. texfilename
  270. texfilename_pgnumend=$+7;8
  271.         db "page_10.bin",0
  272.  
  273.  
  274.  
  275.  
  276. setpgsmain40008000
  277. pgmain4000=$+1
  278.         ld a,0
  279.         SETPG4000
  280. pgmain8000=$+1
  281.         ld a,0
  282.         SETPG8000
  283.         ret
  284.  
  285. setpgsscr40008000_current
  286.         call getuser_scr_low_cur
  287.         SETPG4000
  288.         call getuser_scr_high_cur
  289.         SETPG8000
  290.         ret
  291.  
  292. setpgsscr40008000
  293.         call getuser_scr_low
  294.         SETPG4000
  295.         call getuser_scr_high
  296.         SETPG8000
  297.         ret
  298.  
  299. setpgscrlow4000
  300.         call getuser_scr_low
  301.         SETPG4000
  302.         ret
  303.  
  304. setpgscrhigh4000
  305.         call getuser_scr_high
  306.         SETPG4000
  307.         ret
  308.  
  309. getuser_scr_low
  310. getuser_scr_low_patch=$+1
  311. getuser_scr_low_patchN=0xff&(user_scr0_low^user_scr1_low)
  312.         ld a,(user_scr1_low) ;ok
  313.         ret
  314.  
  315. getuser_scr_high
  316. getuser_scr_high_patch=$+1
  317. getuser_scr_high_patchN=0xff&(user_scr0_high^user_scr1_high)
  318.         ld a,(user_scr1_high) ;ok
  319.         ret
  320.  
  321. getuser_scr_low_cur
  322. getuser_scr_low_cur_patch=$+1
  323. getuser_scr_low_cur_patchN=0xff&(user_scr0_low^user_scr1_low)
  324.         ld a,(user_scr0_low) ;ok
  325.         ret
  326.  
  327. getuser_scr_high_cur
  328. getuser_scr_high_cur_patch=$+1
  329. getuser_scr_high_cur_patchN=0xff&(user_scr0_high^user_scr1_high)
  330.         ld a,(user_scr0_high) ;ok
  331.         ret
  332.  
  333. changescrpg_current
  334.         ld hl,getuser_scr_low_patch
  335.         ld a,(hl)
  336.         xor getuser_scr_low_patchN
  337.         ld (hl),a
  338.         ld hl,getuser_scr_high_patch
  339.         ld a,(hl)
  340.         xor getuser_scr_high_patchN
  341.         ld (hl),a
  342.         ld hl,getuser_scr_low_cur_patch
  343.         ld a,(hl)
  344.         xor getuser_scr_low_cur_patchN
  345.         ld (hl),a
  346.         ld hl,getuser_scr_high_cur_patch
  347.         ld a,(hl)
  348.         xor getuser_scr_high_cur_patchN
  349.         ld (hl),a
  350.  
  351.         ld a,1
  352. curscrnum=$+1
  353.         xor 0
  354.         ld ($-1),a
  355.         ret
  356.        
  357. changescrpg
  358. ;TODO убрать
  359.         call changescrpg_current
  360.         ld e,a
  361.         OS_SETSCREEN
  362.         ret
  363.  
  364. setpg4000
  365.         ld b,tpages/256
  366.         ld c,a
  367.         ld a,(bc)
  368.         SETPG16K
  369.         ret
  370.  
  371. setpg8000
  372.         ld b,tpages/256
  373.         ld c,a
  374.         ld a,(bc)
  375.         SETPG32KLOW
  376.         ret
  377.  
  378. setpgc000
  379.         ld b,tpages/256
  380.         ld c,a
  381.         ld a,(bc)
  382.         SETPG32KHIGH
  383.         ret
  384.  
  385. setShadowScreen
  386.         MSetShadowScreen
  387.         ret
  388.  
  389. _clear_screen
  390.         and 15
  391.         ld l,a
  392.         ld h,high colorMaskTable
  393.         ld e,(hl)
  394.         call setShadowScreen
  395.         ld hl,#4000
  396.         ld (hl),e
  397.         ld de,#4001
  398.         ld bc,#7fff
  399.         call _fast_ldir
  400. RestoreMemMap12
  401.         MRestoreMemMap12
  402.         ret
  403.  
  404. _swap_screen
  405.         push ix
  406.         ;push iy
  407.  
  408.         ld a,(spritesActive)
  409.         or a
  410.         push af
  411.         jr z,.noSpr0
  412.         call setShadowScreen
  413.         call updateTilesToBuffer
  414.         call prspr
  415. .noSpr0
  416.  
  417.         halt
  418.  
  419.         ld a,(_screenActive)
  420.         xor 2
  421.         ld (_screenActive),a ;for select sprqueue
  422.         call changescrpg
  423.  
  424.         pop af
  425.         jr z,.noSpr1
  426.  
  427.         call setShadowScreen
  428.         call respr
  429.         call updateTilesFromBuffer
  430.         call RestoreMemMap3;0
  431.         call RestoreMemMap12
  432. .noSpr1
  433.         ;pop iy
  434.         pop ix
  435.         ret
  436.  
  437. pal_get_address
  438.         ld h,0
  439.         ld l,a
  440.         add hl,hl
  441.         add hl,hl
  442.         add hl,hl
  443.         add hl,hl
  444.          set 7,h
  445.          set 6,h
  446.  
  447.         ld a,PAL_PAGE
  448.         jp setpgc000;SETPG32KHIGH
  449.  
  450.  
  451. _pal_select
  452.         call pal_get_address
  453.  
  454.         ld de,_palette
  455.         ld bc,16
  456.         ldir
  457.  
  458.         ld a,d
  459.         ld (_palChange),a
  460. RestoreMemMap3;0
  461.         ld a,CC_PAGE3;0
  462.         jp setpgc000;SETPG32KHIGH
  463.  
  464.  
  465.  
  466. _pal_bright
  467.         cp 7
  468.         jr c,.l1
  469.         ld a,6
  470. .l1
  471.         ld h,a
  472.         ld l,0
  473.         srl h
  474.         rr l
  475.         srl h
  476.         rr l
  477.         ld (_palBright),hl
  478.         ld a,1
  479.         ld (_palChange),a
  480.         ret
  481.  
  482.  
  483.  
  484. _pal_copy
  485.         push de
  486.         call pal_get_address
  487.  
  488.         ld de,palTemp
  489.         ld bc,16
  490.         ldir
  491.  
  492.         ld a,CC_PAGE3;0
  493.         call setpgc000;SETPG32KHIGH
  494.  
  495.         pop de
  496.         ld hl,palTemp
  497.         ld bc,16
  498.         ldir
  499.         ret
  500.  
  501. ;hl / de
  502. ;out: hl
  503. _DIV
  504.         ld c,h
  505.         ld a,l
  506.         ld hl,0
  507.         ld b,16
  508. ;don't mind carry
  509. _DIV0
  510. ;shift left hlca
  511.         rla
  512.         rl c
  513.         adc hl,hl
  514. ;no carry
  515. ;try sub
  516.         sbc hl,de
  517.         jr nc,$+3
  518.         add hl,de
  519. ;carry = inverted bit of result
  520.         djnz _DIV0
  521.         rla
  522.         cpl
  523.         ld l,a
  524.         ld a,c
  525.         rla
  526.         cpl
  527.         ld h,a
  528.         ret
  529.  
  530. ;hl / de
  531. ;out: hl
  532. _DIVSIGNED
  533.         ld a,h
  534.         xor d
  535.         push af
  536.         ;bit 7,h
  537.         ;call nz,invhl
  538.         ld a,h
  539.         rla
  540.         call c,invhl
  541.         ;jr z,$+2+6
  542.         ;xor a
  543.         ;sub l
  544.         ;ld l,a
  545.         ;sbc a,h
  546.         ;sub l
  547.         ;ld h,a
  548. ;hl>=0
  549.         ;bit 7,d
  550.         ;jr z,$+2+6
  551.         ld a,d
  552.         rla
  553.         jr nc,$+2+6
  554.         xor a
  555.         sub e
  556.         ld e,a
  557.         sbc a,d
  558.         sub e
  559.         ld d,a
  560. ;de>=0
  561.         call _DIV
  562.         pop af
  563.         ret p;z
  564. invhl
  565.         xor a
  566.         sub l
  567.         ld l,a
  568.         sbc a,h
  569.         sub l
  570.         ld h,a
  571.         ret
  572.  
  573.  
  574. ;более быстрая версия ldir, эффективна при bc>12
  575. ;из статьи на MSX Assembly Page
  576. ;в отличие от нормального ldir портит A и флаги
  577. _fast_ldir
  578.         xor a
  579.         sub c
  580.         and 63
  581.         add a,a
  582.         ld (.jump),a
  583. .jump=$+1
  584.         jr nz,.loop
  585. .loop
  586.         dup 64
  587.         ldi
  588.         edup
  589.         jp pe,.loop
  590.         ret
  591.  
  592.         align 256       ;#nn00
  593. tileUpdateXTable
  594.         dup 8
  595.         db #01,#02,#04,#08,#10,#20,#40,#80
  596.         edup
  597. .x=0
  598.         dup 64
  599.         db .x>>3
  600. .x=.x+1
  601.         edup
  602.  
  603.  
  604.         align 256       ;#nn00
  605. colorMaskTable
  606.         db #00,#09,#12,#1b,#24,#2d,#36,#3f      ;для двух пикселей
  607.         db #c0,#c9,#d2,#db,#e4,#ed,#f6,#ff
  608.         db #00,#01,#02,#03,#04,#05,#06,#07      ;для ink
  609.         db #40,#41,#42,#43,#44,#45,#46,#47
  610.         ds 16,0
  611.         db #00,#08,#10,#18,#20,#28,#30,#38      ;для paper
  612.         db #80,#88,#90,#98,#a0,#a8,#b0,#b8
  613.  
  614.  
  615.         align 256
  616. _sprqueue
  617. _sprqueue0      ;формат 4 байта на спрайт, idh,idl,y,x (idh=255 конец списка)
  618.         ds 256,255
  619. _sprqueue1
  620.         ds 256,255
  621.  
  622.         align 256
  623. palBrightTable
  624.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff      ;bright 0
  625.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  626.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  627.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  628.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f      ;bright 1
  629.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f
  630.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f
  631.         db #df,#df,#df,#9f,#df,#df,#df,#9f,#df,#df,#df,#9f,#5f,#5f,#5f,#1f
  632.         db #ff,#ff,#bf,#fd,#ff,#ff,#bf,#fd,#7f,#7f,#3f,#7d,#ef,#ef,#af,#ed      ;bright 2
  633.         db #ff,#ff,#bf,#fd,#ff,#ff,#bf,#fd,#7f,#7f,#3f,#7d,#ef,#ef,#af,#ed
  634.         db #df,#df,#9f,#dd,#df,#df,#9f,#dd,#5f,#5f,#1f,#5d,#cf,#cf,#8f,#cd
  635.         db #fe,#fe,#be,#fc,#fe,#fe,#be,#fc,#7e,#7e,#3e,#7c,#ee,#ee,#ae,#ec
  636.         db #ff,#bf,#fd,#bd,#7f,#3f,#7d,#3d,#ef,#af,#ed,#ad,#6f,#2f,#6d,#2d      ;bright 3
  637.         db #df,#9f,#dd,#9d,#5f,#1f,#5d,#1d,#cf,#8f,#cd,#8d,#4f,#0f,#4d,#0d
  638.         db #fe,#be,#fc,#bc,#7e,#3e,#7c,#3c,#ee,#ae,#ec,#ac,#6e,#2e,#6c,#2c
  639.         db #de,#9e,#dc,#9c,#5e,#1e,#5c,#1c,#ce,#8e,#cc,#8c,#4e,#0e,#4c,#0c
  640.         db #1f,#5d,#1d,#1d,#8f,#cd,#8d,#8d,#0f,#4d,#0d,#0d,#0f,#4d,#0d,#0d      ;bright 4
  641.         db #3e,#7c,#3c,#3c,#ae,#ec,#ac,#ac,#2e,#6c,#2c,#2c,#2e,#6c,#2c,#2c
  642.         db #1e,#5c,#1c,#1c,#8e,#cc,#8c,#8c,#0e,#4c,#0c,#0c,#0e,#4c,#0c,#0c
  643.         db #1e,#5c,#1c,#1c,#8e,#cc,#8c,#8c,#0e,#4c,#0c,#0c,#0e,#4c,#0c,#0c
  644.         db #ec,#ac,#ac,#ac,#6c,#2c,#2c,#2c,#6c,#2c,#2c,#2c,#6c,#2c,#2c,#2c      ;bright 5
  645.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  646.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  647.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  648.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c      ;bright 6
  649.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  650.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  651.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  652.  
  653.         align 256       ;#nn00
  654. scrTable
  655. adr=#4000
  656.         dup 25
  657.         db low adr
  658. adr=adr+(40*8)
  659.         edup
  660.         align 32        ;#nn20
  661. adr=#4000
  662.         dup 25
  663.         db high adr
  664. adr=adr+(40*8)
  665.         edup
  666.  
  667.         align 256       ;#nn00
  668. tileUpdateMap   ;битовая карта обновившихся знакомест, 64x25 бит
  669.         ds 8*25,0
  670.  
  671.         export _DIVSIGNED
  672.  
  673.         export _pal_select
  674.         export _pal_copy
  675.         export _pal_bright
  676.         export _swap_screen
  677.         export _clear_screen
  678.         export _fast_ldir
  679.  
  680.         include "../_sdk/lib_int.asm"
  681.         include "../_sdk/lib_tiles.asm"
  682.         export _draw_tile
  683.         export _draw_image
  684.         export _select_image
  685.         export _draw_tile_key
  686.         export _color_key
  687.  
  688.         include "../_sdk/lib_sprites.asm"
  689.         export _sprites_start
  690.         export _sprites_stop
  691.  
  692.         include "../_sdk/lib_input.asm"
  693.         export _joystick
  694.         export _keyboard
  695.         export _mouse_apply_clip
  696.  
  697.         include "../_sdk/lib_sound.asm"
  698.         export _music_play
  699.         export _music_stop
  700.         export _sample_play
  701.         export _sfx_play
  702.         export _sfx_stop
  703.  
  704. ;переменные
  705.  
  706. musicPage       db 0
  707. tileOffset      dw 0
  708. spritesActive   db 0    ;1 если вывод спрайтов разрешён
  709. tileUpdate      db 0    ;1 если выводились тайлы, для системы обновления фона под спрайтами
  710. palTemp         ds 16,0
  711. keysPrevState   ds 40,0
  712.         ifdef TFM
  713. ;turboFM        db 0    ;!=0 если есть TFM
  714.         else
  715. turboSound      db 0    ;!=0 если есть TS
  716.         endif
  717.  
  718. ;экспортируемые переменные
  719.  
  720.         macro rgb222 b2,g2,r2
  721.         db (((r2&3)<<4)|((g2&3)<<2)|(b2&3))
  722.         endm
  723.  
  724.         align 16
  725. _palette
  726.         rgb222(0,0,0)
  727.         rgb222(0,0,2)
  728.         rgb222(2,0,0)
  729.         rgb222(2,0,2)
  730.         rgb222(0,2,0)
  731.         rgb222(0,2,2)
  732.         rgb222(2,2,0)
  733.         rgb222(2,2,2)
  734.         rgb222(0,0,0)
  735.         rgb222(0,0,3)
  736.         rgb222(3,0,0)
  737.         rgb222(3,0,3)
  738.         rgb222(0,3,0)
  739.         rgb222(0,3,3)
  740.         rgb222(3,3,0)
  741.         rgb222(3,3,3)
  742.  
  743. _borderCol      db 0
  744. _palBright      dw 3<<6
  745. _palChange      db 1
  746. _screenActive   db 0    ;~1 или ~3
  747. _mouse_dx       db 0
  748. _mouse_dy       db 0
  749. _mouse_x        db 80
  750. _mouse_y        db 100
  751. _mouse_cx1      db 0
  752. _mouse_cx2      db 160
  753. _mouse_cy1      db 0
  754. _mouse_cy2      db 200
  755. _mouse_btn      db 0
  756. _mouse_prev_dx  db 0
  757. _mouse_prev_dy  db 0
  758. _time           dd 0
  759.  
  760.         export _borderCol
  761.         export _palBright
  762.         export _palChange
  763.         export _sprqueue
  764.         export _screenActive
  765.         export _mouse_dx
  766.         export _mouse_dy
  767.         export _mouse_x
  768.         export _mouse_y
  769.         export _mouse_cx1
  770.         export _mouse_cx2
  771.         export _mouse_cy1
  772.         export _mouse_cy2
  773.         export _mouse_btn
  774.         export _time
  775.         export _palette
  776.  
  777.        
  778. res_path
  779. ;в этом относительном пути будут лежать все загружаемые данные игры
  780.         ;db "nedoload"
  781.         include "_temp_/sets.asm"
  782.         db 0
  783. fnbin
  784.         db "page_101.bin",0
  785. fnbin2
  786.         db "page_102.bin",0
  787. fnbin3
  788.         db "page_103.bin",0
  789. fnaddr
  790.         db "addr.bin",0
  791. end
  792.         savebin "nedoload.com",begin,end-begin
  793.         LABELSLIST "..\..\..\us\user.l"
  794.