?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.  
  502. _load_from_file
  503.        
  504.         ;file name > de
  505.         ld iy,#2
  506.         add iy,sp
  507.         ld e,(iy)
  508.         inc iy
  509.         ld d,(iy)
  510.        
  511.         OS_OPENHANDLE
  512.         or a
  513.         jp nz,err_exit
  514.         push bc
  515.         ld de,#D000 ;addr
  516.         ld hl,80 ;size
  517.         OS_READHANDLE
  518.         pop bc
  519.         OS_CLOSEHANDLE
  520.         ret
  521. err_exit
  522.         ;file name > de
  523.         ld iy,#2
  524.         add iy,sp
  525.         ld e,(iy)
  526.         inc iy
  527.         ld d,(iy)
  528.        
  529.         OS_CREATEHANDLE
  530.         push bc
  531.         push ix
  532.         ld de,#D000 ;addr
  533.         ld hl,80 ;size
  534.         OS_WRITEHANDLE
  535.         pop ix
  536.         pop bc
  537.         OS_CLOSEHANDLE
  538.         ret
  539.  
  540.  
  541.  
  542. _save_to_file
  543.         ;file name > de
  544.         ld iy,#2
  545.         add iy,sp
  546.         ld e,(iy)
  547.         inc iy
  548.         ld d,(iy)
  549.        
  550.         OS_OPENHANDLE
  551.         push bc
  552.         push ix
  553.         ld de,#D000 ;addr
  554.         ld hl,80 ;size
  555.         OS_WRITEHANDLE
  556.         pop ix
  557.         pop bc
  558.         OS_CLOSEHANDLE
  559.         ret
  560.        
  561.        
  562.        
  563. _exit
  564.         ld hl,0
  565.         QUIT
  566.  
  567.  
  568. ;более быстрая версия ldir, эффективна при bc>12
  569. ;из статьи на MSX Assembly Page
  570. ;в отличие от нормального ldir портит A и флаги
  571. _fast_ldir
  572.         xor a
  573.         sub c
  574.         and 63
  575.         add a,a
  576.         ld (.jump),a
  577. .jump=$+1
  578.         jr nz,.loop
  579. .loop
  580.         dup 64
  581.         ldi
  582.         edup
  583.         jp pe,.loop
  584.         ret
  585.  
  586.         align 256       ;#nn00
  587. tileUpdateXTable
  588.         dup 8
  589.         db #01,#02,#04,#08,#10,#20,#40,#80
  590.         edup
  591. .x=0
  592.         dup 64
  593.         db .x>>3
  594. .x=.x+1
  595.         edup
  596.  
  597.  
  598.         align 256       ;#nn00
  599. colorMaskTable
  600.         db #00,#09,#12,#1b,#24,#2d,#36,#3f      ;для двух пикселей
  601.         db #c0,#c9,#d2,#db,#e4,#ed,#f6,#ff
  602.         db #00,#01,#02,#03,#04,#05,#06,#07      ;для ink
  603.         db #40,#41,#42,#43,#44,#45,#46,#47
  604.         ds 16,0
  605.         db #00,#08,#10,#18,#20,#28,#30,#38      ;для paper
  606.         db #80,#88,#90,#98,#a0,#a8,#b0,#b8
  607.  
  608.  
  609.         align 256
  610. _sprqueue
  611. _sprqueue0      ;формат 4 байта на спрайт, idh,idl,y,x (idh=255 конец списка)
  612.         ds 256,255
  613. _sprqueue1
  614.         ds 256,255
  615.  
  616.         align 256
  617. palBrightTable
  618.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff      ;bright 0
  619.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  620.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  621.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  622.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f      ;bright 1
  623.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f
  624.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f
  625.         db #df,#df,#df,#9f,#df,#df,#df,#9f,#df,#df,#df,#9f,#5f,#5f,#5f,#1f
  626.         db #ff,#ff,#bf,#fd,#ff,#ff,#bf,#fd,#7f,#7f,#3f,#7d,#ef,#ef,#af,#ed      ;bright 2
  627.         db #ff,#ff,#bf,#fd,#ff,#ff,#bf,#fd,#7f,#7f,#3f,#7d,#ef,#ef,#af,#ed
  628.         db #df,#df,#9f,#dd,#df,#df,#9f,#dd,#5f,#5f,#1f,#5d,#cf,#cf,#8f,#cd
  629.         db #fe,#fe,#be,#fc,#fe,#fe,#be,#fc,#7e,#7e,#3e,#7c,#ee,#ee,#ae,#ec
  630.         db #ff,#bf,#fd,#bd,#7f,#3f,#7d,#3d,#ef,#af,#ed,#ad,#6f,#2f,#6d,#2d      ;bright 3
  631.         db #df,#9f,#dd,#9d,#5f,#1f,#5d,#1d,#cf,#8f,#cd,#8d,#4f,#0f,#4d,#0d
  632.         db #fe,#be,#fc,#bc,#7e,#3e,#7c,#3c,#ee,#ae,#ec,#ac,#6e,#2e,#6c,#2c
  633.         db #de,#9e,#dc,#9c,#5e,#1e,#5c,#1c,#ce,#8e,#cc,#8c,#4e,#0e,#4c,#0c
  634.         db #1f,#5d,#1d,#1d,#8f,#cd,#8d,#8d,#0f,#4d,#0d,#0d,#0f,#4d,#0d,#0d      ;bright 4
  635.         db #3e,#7c,#3c,#3c,#ae,#ec,#ac,#ac,#2e,#6c,#2c,#2c,#2e,#6c,#2c,#2c
  636.         db #1e,#5c,#1c,#1c,#8e,#cc,#8c,#8c,#0e,#4c,#0c,#0c,#0e,#4c,#0c,#0c
  637.         db #1e,#5c,#1c,#1c,#8e,#cc,#8c,#8c,#0e,#4c,#0c,#0c,#0e,#4c,#0c,#0c
  638.         db #ec,#ac,#ac,#ac,#6c,#2c,#2c,#2c,#6c,#2c,#2c,#2c,#6c,#2c,#2c,#2c      ;bright 5
  639.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  640.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  641.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  642.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c      ;bright 6
  643.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  644.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  645.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  646.  
  647.         align 256       ;#nn00
  648. scrTable
  649. adr=#4000
  650.         dup 25
  651.         db low adr
  652. adr=adr+(40*8)
  653.         edup
  654.         align 32        ;#nn20
  655. adr=#4000
  656.         dup 25
  657.         db high adr
  658. adr=adr+(40*8)
  659.         edup
  660.  
  661.         align 256       ;#nn00
  662. tileUpdateMap   ;битовая карта обновившихся знакомест, 64x25 бит
  663.         ds 8*25,0
  664.  
  665.         export _pal_select
  666.         export _pal_copy
  667.         export _pal_bright
  668.         export _swap_screen
  669.         export _clear_screen
  670.         export _fast_ldir
  671.        
  672.         ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  673.         export _load_from_file
  674.         export _save_to_file
  675.         export _exit
  676.         ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  677.    
  678.                 include "../_sdk/lib_int.asm"
  679.         include "../_sdk/lib_tiles.asm"
  680.         export _draw_tile
  681.         export _draw_image
  682.         export _select_image
  683.         export _draw_tile_key
  684.         export _color_key
  685.  
  686.         include "../_sdk/lib_sprites.asm"
  687.         export _sprites_start
  688.         export _sprites_stop
  689.  
  690.         include "../_sdk/lib_input.asm"
  691.         export _joystick
  692.         export _keyboard
  693.         export _mouse_apply_clip
  694.  
  695.         include "../_sdk/lib_sound.asm"
  696.         export _music_play
  697.         export _music_stop
  698.         export _sample_play
  699.         export _sfx_play
  700.         export _sfx_stop
  701.  
  702. ;переменные
  703.  
  704. musicPage       db 0
  705. tileOffset      dw 0
  706. spritesActive   db 0    ;1 если вывод спрайтов разрешён
  707. tileUpdate      db 0    ;1 если выводились тайлы, для системы обновления фона под спрайтами
  708. palTemp         ds 16,0
  709. keysPrevState   ds 40,0
  710.         ifdef TFM
  711. ;turboFM        db 0    ;!=0 если есть TFM
  712.         else
  713. turboSound      db 0    ;!=0 если есть TS
  714.         endif
  715.  
  716. ;экспортируемые переменные
  717.  
  718.         macro rgb222 b2,g2,r2
  719.         db (((r2&3)<<4)|((g2&3)<<2)|(b2&3))
  720.         endm
  721.  
  722.         align 16
  723. _palette
  724.         rgb222(0,0,0)
  725.         rgb222(0,0,2)
  726.         rgb222(2,0,0)
  727.         rgb222(2,0,2)
  728.         rgb222(0,2,0)
  729.         rgb222(0,2,2)
  730.         rgb222(2,2,0)
  731.         rgb222(2,2,2)
  732.         rgb222(0,0,0)
  733.         rgb222(0,0,3)
  734.         rgb222(3,0,0)
  735.         rgb222(3,0,3)
  736.         rgb222(0,3,0)
  737.         rgb222(0,3,3)
  738.         rgb222(3,3,0)
  739.         rgb222(3,3,3)
  740.  
  741. _borderCol      db 0
  742. _palBright      dw 3<<6
  743. _palChange      db 1
  744. _screenActive   db 0    ;~1 или ~3
  745. _mouse_dx       db 0
  746. _mouse_dy       db 0
  747. _mouse_x        db 80
  748. _mouse_y        db 100
  749. _mouse_cx1      db 0
  750. _mouse_cx2      db 160
  751. _mouse_cy1      db 0
  752. _mouse_cy2      db 200
  753. _mouse_btn      db 0
  754. _mouse_prev_dx  db 0
  755. _mouse_prev_dy  db 0
  756. _time           dd 0
  757.  
  758.         export _borderCol
  759.         export _palBright
  760.         export _palChange
  761.         export _sprqueue
  762.         export _screenActive
  763.         export _mouse_dx
  764.         export _mouse_dy
  765.         export _mouse_x
  766.         export _mouse_y
  767.         export _mouse_cx1
  768.         export _mouse_cx2
  769.         export _mouse_cy1
  770.         export _mouse_cy2
  771.         export _mouse_btn
  772.         export _time
  773.     export _palette
  774.  
  775.        
  776. res_path
  777. ;в этом относительном пути будут лежать все загружаемые данные игры
  778.         ;db "nedoload"
  779.         include "_temp_/sets.asm"
  780.         db 0
  781. fnbin
  782.         db "page_101.bin",0
  783. fnbin2
  784.         db "page_102.bin",0
  785. fnbin3
  786.         db "page_103.bin",0
  787. fnaddr
  788.         db "addr.bin",0
  789.  
  790.                
  791. end
  792.         savebin "nedoload.com",begin,end-begin
  793.         LABELSLIST "..\..\..\us\user.l"
  794.