?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1.         DEVICE ZXSPECTRUM48
  2.         include "../../_sdk/sys_h.asm"
  3.         org PROGSTART
  4.  
  5. module equ 0x5000
  6. player_load = 0x4000
  7.  
  8. ovl_start = 0x4000
  9.  
  10. PLR_INIT  = 0x4000
  11. PLR_PLAY  = 0x4005
  12. PLR_MUTE  = 0x4007
  13.  
  14. GLOBVARS = 0x3800
  15. LOCVARS  = 0x3900
  16. ACTMENU  = 0x3a00
  17. ILINK    = 0x3b00
  18. STK_MENU = 0x3c00
  19. STK_SUB  = 0x3d64
  20.  
  21. cmd_begin
  22.     OS_HIDEFROMPARENT
  23.  
  24.     ld sp,0x4000
  25.     ld e,6+0x80  //set TEXT mode  keep
  26.     OS_SETGFX
  27.  
  28.         ld e,0
  29.         OS_CLS
  30.  
  31.         OS_GETMAINPAGES
  32. ;dehl=номера страниц в 0000,4000,8000,c000
  33.         ld a,d
  34.         ld (winpage0),a
  35.         ld a,e
  36.         ld (winpage1),a
  37.         ld a,h
  38.         ld (winpage2),a
  39.         ld a,l
  40.         ld (winpage3),a
  41.  
  42. ; get music page page
  43.         OS_NEWPAGE
  44.         or a
  45.         jp nz,memoryerror
  46.         ld a,e
  47.         ld (music_buf),a
  48.  
  49. ; get gfx load buffer  2 pages
  50.         OS_NEWPAGE
  51.         or a
  52.         jp nz,memoryerror
  53.         ld a,e
  54.         ld (load_buf1),a
  55.  
  56.         OS_NEWPAGE
  57.         or a
  58.         jp nz,memoryerror
  59.         ld a,e
  60.         ld (load_buf2),a
  61.  
  62. ; get ingame gfx buffer pages 6 pages
  63.         OS_NEWPAGE
  64.         or a
  65.         jp nz,memoryerror
  66.         ld a,e
  67.         ld (scr_buf1),a
  68.  
  69.         OS_NEWPAGE
  70.         or a
  71.         jp nz,memoryerror
  72.         ld a,e
  73.         ld (scr_buf2),a
  74.  
  75.         OS_NEWPAGE
  76.         or a
  77.         jp nz,memoryerror
  78.         ld a,e
  79.         ld (mem_buf1),a
  80.  
  81.         OS_NEWPAGE
  82.         or a
  83.         jp nz,memoryerror
  84.         ld a,e
  85.         ld (mem_buf2),a
  86.  
  87.         ld hl,txt_setup
  88.         call print_hl
  89. setup_lp:        
  90.         YIELDGETKEYLOOP
  91.         cp "1"
  92.         jr z,setup_is1
  93.         cp "2"
  94.         jr z,setup_is2
  95.         cp "3"
  96.         jr z,setup_is3
  97.         jr setup_lp
  98. setup_is1:
  99.           xor a
  100.           jr setup_set
  101. setup_is2:
  102.          ld a,1
  103.           jr setup_set
  104. setup_is3:
  105.          ld a,2
  106. setup_set:
  107.         ld (language),a
  108. ;-----------------------------------------
  109.         ;go to resources directory
  110.         ld de,res_path
  111.         OS_CHDIR
  112.         or a
  113.         jp nz,dirchangeerror
  114.  
  115.         ;----------------------
  116.         ;--load music player
  117.  
  118.  
  119.               call setmusicpage
  120.                 ld a,(mus_mode)
  121.                 ld hl,mus_modes
  122.                 call sel_word
  123.  
  124.                 ld de,buf
  125.                 call copystr_hlde
  126.                 ld hl,mus_plr_path
  127.                 call copystr_hlde
  128.                 xor a
  129.                 ld (de),a
  130.  
  131.                 ld de,buf
  132.                 call openstream_file
  133.                 or a
  134.                 jp nz,fileopenerror
  135.  
  136.                 ld hl,0x4000 ;len
  137.                 ld de,player_load ;addr
  138.                 call readstream_file
  139.                 or a
  140.                 jp nz,filereaderror
  141.  
  142.                 call closestream_file
  143.  
  144.              call unsetmusicpage
  145.  
  146.  
  147.         call int_set
  148.  
  149.         ;set mode
  150.         ld e,0+0x80  //set EGA mode keep
  151.         OS_SETGFX
  152.  
  153.         call clear_screen
  154.         LD B,75
  155. ;b_l:
  156. ;        halt
  157. ;        djnz b_l
  158. ;-----------------------------------------
  159. begin:
  160.         ld a,0x15
  161.         ld (COOOR+2),a ;y coord for ingame initial text position
  162.  
  163.  
  164.         ld a,10
  165.         call load_mus
  166.  
  167.         ld a,0
  168. intro_  equ $-1
  169.         and a
  170.         call z,introduction
  171.  
  172.        
  173.        
  174.  
  175. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  176. ; load menu picture
  177.         ld hl,menu_pic
  178.         call load_big_img_dark
  179.  
  180.  
  181.         ld hl,menu_pic2
  182.         call load_gfx_to_load_buf
  183.         call _immed_big
  184.  
  185. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  186. _main_menu:
  187.         ld hl,TABLE_W
  188.         ld (CODEPAGE),hl
  189.  
  190.        
  191. ;-----open gallery file
  192.         call _load_cdata
  193. ;-----------------------------------------------                
  194.  
  195.         call store_scr0_mem_buf
  196.  
  197. _main_menu_mmm:
  198.  
  199.         ld a,0
  200. _mmnr   equ $-1        
  201.         and a
  202.         jr z,_dont_need_restore
  203.  
  204.         call restore_scr0_mem_buf
  205.         xor a
  206.         ld (_mmnr),a
  207.  
  208. _dont_need_restore:
  209.         ld hl,loc_main_menu
  210.         ld de,menu_main_action
  211.  
  212.         push de
  213.         ld a,(language)
  214.         call sel_word
  215.        
  216.         call _pre_setup
  217.         call _pre_menu_store_bgnd
  218.         call _prt_menu
  219. _mmnu_r1        
  220.         call _sel_menu
  221.         cp 0xff
  222.         jr z,_mmnu_r1 ;block esc
  223.  
  224.         call _pre_menu_restore_bgnd
  225.  
  226.         pop hl
  227.         call sel_word
  228.         jp (hl)
  229. ;       call waitkey
  230. _gamequit
  231.         call no_mus
  232.         jp cmd_quit
  233.  
  234.  
  235. _loadgame
  236.         ld hl,loc_load_menu
  237.         ld de,menu_load_action        
  238.  
  239.         push de
  240.         ld a,(language)
  241.         call sel_word
  242.        
  243.         call _pre_setup
  244.         call _pre_menu_store_bgnd
  245.         call _prt_menu
  246.        
  247.         call _sel_menu
  248.         call _pre_menu_restore_bgnd
  249.         pop hl
  250.  
  251.         cp 0xff
  252.         jp z,_main_menu_mmm
  253.  
  254.         call sel_word
  255.         jp (hl)
  256.  
  257. _characters
  258. _to_chr_page1
  259.         ld hl,loc_chars1_menu
  260.         ld de,menu_chars1_action        
  261.         ld a,1
  262.  
  263. _characters_lp
  264.         ld (characters_current),a
  265.         push de
  266.         ld a,(language)
  267.         call sel_word
  268.        
  269.         call _pre_setup
  270.         call _pre_menu_store_bgnd
  271.         call _prt_menu
  272.        
  273.         call _sel_menu
  274.         call _pre_menu_restore_bgnd
  275.         pop hl
  276.  
  277.         cp 0xff
  278.         jp z,_main_menu_mmm
  279.  
  280.         call sel_word
  281.         jp (hl)
  282.  
  283. _to_chr_page2
  284.         ld hl,loc_chars2_menu
  285.         ld de,menu_chars2_action
  286.         ld a,2
  287.         jr _characters_lp
  288. _to_chr_page3
  289.         ld hl,loc_chars3_menu
  290.         ld de,menu_chars3_action
  291.         ld a,3
  292.         jr _characters_lp
  293. _to_chr_page4        
  294.         ld hl,loc_chars4_menu
  295.         ld de,menu_chars4_action
  296.         ld a,4
  297.         jr _characters_lp
  298. ;0x33 = 33 reiko op01
  299. ;0x34 = 33 kiyomi 02
  300. ;0x35 = 33 mio 03
  301. ;0x36 = 33 shoko 04
  302. ;0x37 = 33 ruri    08  
  303. ;0x38 = 33 aki 05
  304. ;0x39 = 33 seia 06
  305. ;0x3a = 33 meimi 07
  306.  
  307. _op1_show ;reiko
  308.         ld bc,0x0001
  309.         jr _op_show
  310. _op2_show ;kiyomi
  311.         ld bc,0x0101
  312.         jr _op_show        
  313. _op3_show ;mio
  314.         ld bc,0x0201
  315.         jr _op_show        
  316. _op4_show ;shoko
  317.         ld bc,0x0301
  318.         jr _op_show
  319. _op5_show ;aki
  320.         ld bc,0x0401
  321.         jr _op_show
  322. _op6_show ;seia
  323.         ld bc,0x0501
  324.         jr _op_show        
  325. _op7_show ;meimi
  326.         ld bc,0x0601
  327.         jr _op_show        
  328. _op8_show ;ruri
  329.         ld bc,0x0701
  330.         jr _op_show        
  331. _op9_show ;kyoko
  332.         ld bc,0x0800
  333.         jr _op_show        
  334. _op10_show ;makoto
  335.         ld bc,0x0900
  336.         jr _op_show                
  337. _op11_show ;nobuyuki
  338.         ld bc,0x0a00
  339.         jr _op_show        
  340. _op12_show ;emi
  341.         ld bc,0x0b00
  342.         jr _op_show        
  343. _op13_show ;shinji
  344.         ld bc,0x0c00
  345.         jr _op_show                
  346. _op14_show ; dean
  347.         ld bc,0x0d00
  348. _op_show
  349.         ld a,1
  350.         ld (_mmnr),a
  351.  
  352.         ld a,b
  353.         ld (_current_op),a
  354.  
  355.         ld a,c
  356.         and a
  357.         jr z,_op_skp
  358.  
  359.         ld e,b
  360.         ld d,0
  361.         ld hl,_op_slct
  362.         add hl,de
  363.         ld e,(hl)
  364.         ld hl,CDATA
  365.         add hl,de
  366.         ld a,(hl)
  367.  
  368.         ld (_op_rslt),a
  369.  
  370. _op_skp:
  371.         push bc
  372.  
  373.         ld a,b
  374.         inc a
  375.         call a_to_dec
  376.         LD (op_path2+3),A
  377.         LD A,B
  378.         LD (op_path2+2),A        
  379.  
  380.         ld hl,op_path2
  381.         call load_gfx_to_load_buf
  382.         call _immed_big
  383.  
  384.  
  385.         pop bc
  386.         ld a,c
  387.         and a
  388.         jr z,_op_skp2
  389.         ld a,(_op_rslt)
  390.         cp 0x33
  391.         jr nz,_op_skp2
  392.  
  393. ;--------------------------
  394.         ;TODO show badge
  395.         ; show add menu
  396.         ld hl,badge_pic
  397.         call load_gfx_to_load_buf
  398.  
  399.         call _immed_overlay_big
  400.  
  401.  
  402.         call waitkey
  403.  
  404.         ld hl,loc_lb_menu
  405.         ld de,menu_lb_action
  406.  
  407.         push de
  408.         ld a,(language)
  409.         call sel_word
  410.        
  411.         call _pre_setup
  412.         call _pre_menu_store_bgnd
  413.         call _prt_menu
  414. _mmnu_r2        
  415.         call _sel_menu
  416.         cp 0xff
  417.         jr z,_mmnu_r2 ;block esc
  418.  
  419.         call _pre_menu_restore_bgnd
  420.  
  421.         pop hl
  422.         call sel_word
  423.         jp (hl)
  424.  
  425.  
  426. ;-------------------------
  427.  
  428. _op_skp2:
  429.         call waitkey        
  430.  
  431. _mem_decline:
  432.         ld a,(characters_current)
  433.         cp 1
  434.         jp z,_to_chr_page1
  435.         cp 2
  436.         jp z,_to_chr_page2
  437.         cp 3
  438.         jp z,_to_chr_page3
  439.         cp 4
  440.         jp z,_to_chr_page4        
  441.         jp _to_chr_page1
  442. ;-----------------------------------------------------------------------
  443. _mem_look_back:
  444.         ld a,(_current_op)
  445.         ld hl,_op_endings
  446.         call sel_word   ;hl name ovl to load
  447.         jp GAMESTART1
  448. ;-----------------------------------------------------------------------
  449. _load_slot1:
  450.         ld a,1
  451.         jr _load_slot
  452. _load_slot2:
  453.         ld a,2
  454.         jr _load_slot
  455. _load_slot3:
  456.         ld a,3
  457.         jr _load_slot
  458. _load_slot4:
  459.         ld a,4
  460.         jr _load_slot
  461. _load_slot5:
  462.         ld a,5
  463. _load_slot:
  464.         add a,"0"
  465.         ld (SAVETEMPL_N),a
  466.  
  467.  
  468.         ld de,SAVETEMPL
  469.         call openstream_file
  470.         or a
  471.         jp nz,_loadgame
  472.  
  473. _load_common:
  474.  
  475.         ld hl,538 ;len
  476.         ld de,buf
  477.         call readstream_file
  478.         or a
  479.         jp nz,filereaderror
  480.  
  481.         call closestream_file
  482.  
  483.         call save_to_globals
  484.  
  485.         jr GAMESTART1   ;hl-pointer to ovl name to load.
  486.  
  487. ;-----------------------------------------------------------------------        
  488. _newgame:
  489. NWGAM:
  490.         xor a
  491.         LD HL,GLOBVARS
  492.         LD B,A
  493.         LD (HL),A
  494.         INC HL
  495.         DJNZ $-2
  496.         ld hl,FSTOVL
  497.  
  498. GAMESTART1        
  499.         ld de,OVL
  500.         call copystr_hlde
  501.         xor a
  502.         ld (de),a        
  503.  
  504.         call clear_whole_screen
  505. GAMESTART
  506.         ld hl,TABLE_J
  507.         ld (CODEPAGE),HL
  508. ;---------------------------------------------
  509. ;-draw pretty border
  510.        ld hl,ingame_border
  511.         call load_gfx_to_load_buf
  512.  
  513.         ld hl,pal
  514.         ld de,temppal
  515.         ld bc,32
  516.         ldir
  517.  
  518.         ld hl,blackpal
  519.         ld de,pal
  520.         ld bc,32
  521.         ldir
  522.  
  523.         call _immed_big
  524.  
  525.         ld de,pal
  526.         ld hl,temppal
  527.         ld bc,32
  528.         ldir        
  529.  
  530.         ld a,1
  531.         ld (setpalflag),a
  532.  
  533. ;---------------------------------------------
  534. BEG
  535.         ld a,0xaf ;xor a
  536.         ld (SUBLOCK),a  ; ???? hz chto eto. ne pomnu
  537.  
  538. ;;╤╥╚╨└┼╠ LOCVARS ╚ ACTMENU
  539.         xor a
  540.         ld hl,LOCVARS
  541.         ld bc,2
  542.         ld (hl),a
  543.         inc hl
  544.         djnz $-2
  545.         dec c
  546.         jr nz,$-5
  547. ;---
  548.        ld h,a
  549.        ld l,h
  550.        ld (g_curpos),hl
  551.  
  552. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  553. ; TODO шёяЁртшЄ№!!!!
  554.         LD HL,#1100
  555.         LD (g_atpos),HL            ;ATPOS= Y=#11 X=1
  556. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  557.  
  558.  
  559.         ld hl,OVL
  560.         call load_ovl_to_script_buf
  561.  
  562.         ;store loaded ovl name
  563.         ld hl,OVL
  564.         ld de,LOADED
  565.         ld bc,13
  566.         ldir
  567.  
  568.  
  569.         call _ftp ;search first text
  570.         push hl
  571.         call _precache
  572.         pop hl
  573.  
  574. TXTOUT:
  575.         LD BC,#1500
  576.         CALL _pradd
  577.         CALL _print
  578. TXTOUT1:
  579.         call WINCLR2
  580.         call _menu
  581.         call WINCLR2
  582.  
  583.  
  584. SEARCH:
  585.         LD DE,ILINK
  586.         EX DE,HL
  587. SEARCH0:
  588.         LD A,(HL)
  589.         INC HL
  590.         CP E
  591.         JR NZ,SEARCH1
  592.         LD A,(HL)
  593.         INC HL
  594.         CP D
  595.         JR NZ,SEARCH1+1
  596.         LD A,(HL)
  597.         INC HL
  598.         LD H,(HL)
  599.         LD L,A
  600.         LD A,(HL)
  601.         INC HL
  602.         LD H,(HL)
  603.         LD L,A
  604.         LD A,#40
  605.         ADD A,H
  606.         LD H,A
  607.         LD BC,4
  608.         ADD HL,BC
  609.         LD A,(HL)
  610.         INC HL,HL
  611.         LD D,HIGH LOCVARS
  612.         LD E,A
  613.         LD A,(DE)
  614.         ADD A,A
  615.         LD E,A
  616.         LD D,0
  617.         ADD HL,DE
  618.         LD A,(HL)
  619.         INC HL
  620.         LD H,(HL)
  621.         LD L,A
  622.         LD A,#40
  623.         ADD A,H
  624.         LD H,A
  625.         JP TXTOUT
  626. SEARCH1:
  627.         INC HL,HL,HL
  628.         JR SEARCH0
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.         call waitkey
  638.  
  639.         jp _gamequit
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.         include "../../_sdk/file.asm"
  647.         include "variables.asm"
  648.         include "sub_vars.asm"
  649.         include "sub_func.asm"
  650.         include "sub_dsk.asm"
  651.         include "gfx_func.asm"
  652. FONT:   incbin  "font_rus.bin"
  653. CDATA:  ds 100,0
  654. buf:            
  655. txt_setup:          db 0x0A,"Season of the Sakura (Sakura no Kisetsu)",0x0D,0x0A
  656.                     db "(c) 1996 JAST",0x0D,0x0A
  657.                     db "----------------------------------------",0x0D,0x0A
  658.                     db "language setup",0x0D,0x0A
  659.                     db 0x0D,0x0A
  660.                     db "1. English (DOS)",0x0D,0x0A
  661.                     db "2. English (Jast USA memorial collection)",0x0D,0x0A
  662. ;                    db "2. Russian",0        
  663.                     db "3. ",0x90,0xe3,0xe1,0xe1,0xaa,0xa8,0xa9,0        
  664. buf_ext             ds 538-(buf_ext-txt_setup),0
  665.  
  666. cmd_end:        
  667.         include "ptsplay.asm"
  668.  
  669.         savebin "saku-zx.com",cmd_begin,cmd_end-cmd_begin
  670.         savebin "aym_plr.bin",ptsbegin,ptsend-ptsbegin
  671.         LABELSLIST "..\..\..\us\user.l"
  672.