If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
Fighting Street/Uncompiled Source Code
Jump to navigation
Jump to search
This is a sub-page of Fighting Street.
To do: Get hex addresses and extract the rest. Also, fix up some of the fragments |
Scattered throughout the disc are small bits of code. That said, it turns out there is a lot of code, possibly a result of the amount of disk space given to the game. The following bits of code are in the Japanese version of the game and can be found at the following addresses.
0x1800
r_m equ $222f s_mode equ $2230 ; tnomin equ $2250 tnomax equ $2251 outmin equ $2252 outsec equ $2253 outfrm equ $2254 suberrc equ $225a vdtin_flg equ $225d int_flg equ $2284 ramend equ $2285 ; max_mapping equ $fff5
0x3000
;************************************************ ;* ================================ * ;* project :ストリート・ファイター * ;* ================================ * ;* group :MAIN * ;* file :MAIN.S * ;* date :S63/4 * ;* coding :Alfa HaHi/Takamine * ;* * ;************************************************ ;=============================== ; include file ;=============================== include 7UP.H include BIOSW.H include CONST.H include ID.H ;=============================== ; extrn declare ;=============================== extrn function_in ;WORK.S extrn function_out ;WORK.S extrn stage_no ;WORK.S extrn hi_sel ;WORK.S ; extrn s_game2 ; extrn readptr extrn seekpos zextrn a0,a1,len zextrn sprite_ptr ;=============================== ; public declare ;=============================== public main_start public read public stage_id public stage_spos public load_stage public set_seekpos public sat_clear ;===============================
0xFCB0
========== ファイル ALL.BAT の行数 = 18 ========== ファイル BACKUP.BAT の行数 = 5 BONUS2.BAT 4: store =%BONUS2_ID%*0x20000 bonus2.bin ========== ファイル BONUS2.BAT の行数 = 7 CONT.BAT 4: store =%CONT_ID%*0x20000 cont.bin ========== ファイル CONT.BAT の行数 = 7 ========== ファイル CP.BAT の行数 = 12 FIGHT1.BAT 4: store =%FIGHT1_ID%*0x20000 fight1.bin ========== ファイル FIGHT1.BAT の行数 = 7 FIGHT2.BAT 4: store =%FIGHT2_ID%*0x20000 fight2.bin ========== ファイル FIGHT2.BAT の行数 = 7 FIGHT3.BAT 4: store =%FIGHT3_ID%*0x20000 fight3.bin ========== ファイル FIGHT3.BAT の行数 = 7 ========== ファイル FONT.BAT の行数 = 21 FONT1.BAT 1: store =(%FONT_ID%+%2)*0x20000 %1.bin ========== ファイル FONT1.BAT の行数 = 1 GAME.BAT 4: store =%GAME_ID%*0x20000 game.bin ========== ファイル GAME.BAT の行数 = 7 HATA.BAT 4: store =%HATA_ID%*0x20000 hata.bin ========== ファイル HATA.BAT の行数 = 7 ========== ファイル ID.BAT の行数 = 19 MAP.BAT 4: store =%MAP_ID%*0x20000 map.bin ========== ファイル MAP.BAT の行数 = 7 NAME.BAT 4: store =%NAME_ID%*0x20000 name.bin ========== ファイル NAME.BAT の行数 = 7 OPEN.BAT 4: store =%OPEN_ID%*0x20000 opendat.bin OPEN.BAT 5: store =%OPEN_ID%*0x20000 open.bin ========== ファイル OPEN.BAT の行数 = 8 ========== ファイル PK.BAT の行数 = 1 RANK.BAT 4: store =%RANK_ID%*0x20000 rank.bin ========== ファイル RANK.BAT の行数 = 7 RESET.BAT 4: store =%RESET_ID%*0x20000 reset.bin ========== ファイル RESET.BAT の行数 = 7 ROUND.BAT 4: store =%ROUND_ID%*0x20000 round.bin ========== ファイル ROUND.BAT の行数 = 7 SEL.BAT 4: store =%SEL_ID%*0x20000 sf.bin SEL.BAT 5: store =%SEL_ID%*0x20000 sel.bin ========== ファイル SEL.BAT の行数 = 8 STAGE.BAT 4: store =%STAG_ID%*0x20000 stage.bin ========== ファイル STAGE.BAT の行数 = 7 ========== ファイル TBL.BAT の行数 = 10 TBL1.BAT 7: store =%STAG_ID%*0x20000+(0x10+%2*0x04)*0x800 %1tbl.bin ========== ファイル TBL1.BAT の行数 = 10 ========== ファイル TEST.BAT の行数 = 42 ========== ファイル TR.BAT の行数 = 12 TR1.BAT 14: store =%FIGHT1_ID%*0x20000+(0x20+%2*0x10)*0x800+0x6000 %1.bin TR1.BAT 18: store =%FIGHT1_ID%*0x20000+0xe000 %1.bin TR1.BAT 22: store =%FIGHT1_ID%*0x20000+0xf000 %1.bin ========== ファイル TR1.BAT の行数 = 25 VS.BAT 4: store =%VS_ID%*0x20000 vs.bin ========== ファイル VS.BAT の行数 = 7 ========== ファイル X.BAT の行数 = 1 MAIN.BAT 4: rem store =%MAIN_ID%*0x20000 main.bin ========== ファイル MAIN.BAT の行数 = 7 ========== 該当ファイルの総行数 = 298
0x1066D
err: cla ldx #32 ldy #30 jsr screen_mode lda #1 sec rts ;=========================================================================== ; Input data ; a <= 0<-5MHz 1<-7MHz ; x <= ( 10 - 34 ) ( 16 - 44 ) ps.not use odd data. ; y <= ( 10 - 30 ) ( 10 - 30 ) ; jsr screen_mode fast init ; jsr screen_set init genzai no mode ni para is not use ; if cf set then error ;=========================================================================== ; screen_mode: sta s_mode and #5 sta s_mode stx s_mode+1 sty s_mode+2 screen_set: lda s_mode+2 cmp #10 bcc screen_errpop cmp #31 bcs screen_errpop lda s_mode and #1 bne screen_7M screen_5M: lda s_mode+1 cmp #10 bcc screen_err cmp #35 bcs screen_err bsr screen_yset reg #10 ;<HSR> setup st1 #2 ;HSW <=2 lda s_mode+1 tax dex ;x<=HDW lsr a eor #$ff clc adc #$13 sta $0003 ;hi7up<=HDS clc adc s_mode+1 eor #$ff tay ;y<=-(HDS+HDW+2) reg #11 ;<HDR> setup stx $0002 ;low7up<=HDW tya clc adc #$27 sta $0003 ;hi7up<=HDE cla jsr dot_mode cla rts ; screen_7M: lda s_mode+1 cmp #16 bcc screen_err cmp #45 bcs screen_err bsr screen_yset reg #10 ;<HSR> setup st1 #3 ;HSW <=3 lda s_mode+1 tax dex ;x<=HDW lsr a eor #$ff clc adc #$19 sta $0003 ;hi7up<=HDS clc adc s_mode+1 eor #$ff tay ;y<=-(HDS+HDW+2) reg #11 ;<HDR> setup stx $0002 ;low7up<=HDW tya clc adc #$35 sta $0003 ;hi7up<=HDE lda #10 jsr dot_mode cla rts ; screen_yset: reg #12 ;VPR st1 #2 ;VSW<=2 lda s_mode+2 asl a asl a asl a tax ;y<=VDW dex lsr a eor #$ff clc adc #136 sta $0003 ;hi7up<=VDS reg #13 ;VDR stx $0002 ;low7up<=low VDW st2 #0 ;hi7up<=hi VDW reg #14 ;VCR txa inc a inc a lsr a adc #125 sta $0002 ;low7up<=VCR st2 #0 ;hi7up<=0 lda s_mode eor #4 sta $400 ;ctsr rts ; ;============================ ; set v line mode ;============================ vmode: smb3 crh_m lda mwr_m and #$30 beq mode_mid smb4 crh_m and #1 bne hvmode rmb3 crh_m bra hvmode ; ;============================ ; set v line mode ;============================ hmode: rmb3 crh_m mode_mid: rmb4 crh_m hvmode: reg #5 ;CR lda crh_m sta $0003 ;hi7up rts ; ;=============== ;wait for v_sync ;=============== vsync: cli bbs3 crl_m,vsyncj jsr irqon vsyncj: lda irq_cnt vsyncw: cmp irq_cnt beq vsyncw rts ; ;========== ;on rcr irq ;========== rcron: smb2 crl_m ;rcr irq on bra crset ; ;========== ;off rcr irq ;========== rcroff: rmb2 crl_m ;rcr irq off bra crset ; ;========= ;on v_sync ;========= irqon: smb2 crl_m ;rcr irq on smb3 crl_m ;v-sync check (vc) on bra crset ; ;======================= ;off v_sync & raster hit ;======================= irqoff: rmb2 crl_m ;rcr irq off rmb3 crl_m ;v-sync check (vc) off crset: reg #5 ;CR lda crl_m sta $0002 ;LOW7UP rts ; ;===================== ;display control ;effect in next v_sync ;===================== bgon: smb7 crl_m rts ; bgoff: rmb7 crl_m rts ; spron: smb6 crl_m rts ; sproff: rmb6 crl_m rts ; dspon: smb6 crl_m ;spr on smb7 crl_m ;bg on rts ; dspoff: rmb6 crl_m ;spr off rmb7 crl_m ;bg off rts ; ;========================================== ; DMA mode setup ; a=DMA mode ;========================================== dma_mode: and #31 sta dcr_m reg #15 lda dcr_m sta $0002 ;DCR rts ; ;============================== ;dma transfer sprite sat buffer ;============================== sprdma: reg #19 ;DVSSR lda sat_adr sta $0002 ;low7up lda sat_adr+1 sta $0003 ;hi7up jmp vsync ; ;======================================================================= ; joy card sens ( 5 players ) ; in joyena ; out joytrg ;======================================================================= joy_pad: lda #%0000_0001 ; pad reset sta $1000 ;joyio lda #%0000_0011 sta $1000 ;joyio ; cly ; pad read ( 5 time ) joy_pad_loop1: lda #%0000_0001 sta $1000 ;joyio pha ; 1.24us delay $e3 ;tia dw $0404 ;ctdt ; ;================ ;clear sat buffer ;================ satclr: jsr hmode reg #0 ;MAWR lda sat_adr sta $0002 ;low7up lda sat_adr+1 sta $0003 ;hi7up reg #2 ;VWR clx satclp: st1 #0 st2 #0 dex bne satclp rts ; ;============================================== ; ; irq_m ; 7 6 5 4 3 2 1 0 ; | | | | | | | | ; | | | | | | | +---irq2 jmp vector enb ; | | | | | | +-----irq jmp vector enb ; | | | | | +-------timer jmp vector enb ; | | | | +---------nmi jmp vector enb ; | | | +-----------if irq vectot off then sync jmp vector enb ; | | +-------------nop sync irq ; | +---------------if irq vectot off then rcr jmp vector enb ; +-----------------nop rcr irq ; ;=============================================== ; irq handring nmi/irq/irq2/timer ;=============================================== ; ;=============== ;handler for irq ;=============== nmivec: bbs3 irq_m,nmi_go rti nmi_go: jmp [nmi_jmp] ; ;===================== ;handler for timer irq ;===================== ; timvec: bbs2 irq_m,tim_go sta $1403 ;irqreg tiq reset rti ; tim_go: jmp [tim_jmp] ; ;================ ;handler for irq2 ;================ ; irq2vc: bbs0 irq_m,irq2_go rti ; irq2_go: jmp [irq2_jmp] ; ;================= ;user program call ;================= ; user_rcr: jmp [rcr_jmp] ; user_sync: jmp [sync_jmp] ; irq_go: jmp [irq_jmp] ; ;=============== ;handler for irq ;=============== ; irqvec: bbs1 irq_m,irq_go pha phx phy lda $0000 ;reg7up sta str_b bbr5 str_b,irqh ; ;vsync ; st0 #5 ;CR lda crl_m sta $0002 ;LOW7UP lda crh_m sta $0003 ;HI7UP inc irq_cnt bbs5 irq_m,irqsn st0 #7 ;BXR tii bgx1,$0002,2 ;$0002=low7up st0 #8 ;BYR tii bgy1,$0002,2 ;$0002=low7up jsr color_command ;color data trans jsr joy_pad irqsn: bbr4 irq_m,irqh jsr user_sync ; ;hsync ; irqh: bbr4 str_b,irqe bbs7 irq_m,irqhn st0 #7 ;BXR tii bgx2,$0002,2 ;$0002=low7up st0 #8 ;BYR tii bgy2,$0002,2 ;$0002=low7up irqhn: bbr6 irq_m,irqe jsr user_rcr ; irqe: lda reg_box sta $0000 ;REG7UP ply plx pla rti
11E21:
;------------------------------- start: lea readptr,main_start lea seekpos,$0004 lda #02 jsr read_entry jmp main_start ;/////////////////////////////// endif ; ;*********************** end of PACK.S ********************************* ; ointer is sprite_ptr ( 0-63 ) ;-------------------------------------- SPRX_MAX equ 320+32 SPRY_MAX equ $100+64 ; sat_set: lda sprite_ptr cmp #64 bcs satste ; lda sprx+1 beq sat_putx cmp #high SPRX_MAX bne satste lda sprx cmp #low SP
lea readptr,$4000 lda #$20 jmp read ;----------------------- load_fontdata: jsr get_fontdata_loc ; jsr set_bank_3 ; cla jsr set_seekpos_sub lea readptr,$3700 lda #high($4000-$3700) jsr read ; lda #2 jsr set_seekpos_sub lea readptr,$4000 lda #$20 jsr read ; jsr set_bank_4567 ; lda #$16 jsr set_seekpos_sub lea readptr,$4000 lda #$80 jsr read ; lea a0,$4000 lea a1,FIGHT_DATA_ADRS lea len,($8000-FIGHT_DATA_ADRS) jsr tfr_to_7up ; lda #$06 jsr set_seekpos_sub lea readptr,$4000 lda #$80 jmp read ; set_seekpos_sub: add w_seekpos+l sta seekpos+l cla adc w_seekpos+h sta seekpos+h rts ; ;------------------------------- bgdata_loc_tbl: dw $020 ;rtu_bg dw $030 ;gki_bg dw $040 ;joe_bg dw $050 ;mik_bg dw $060 ;lee_bg dw $070 ;gen_bg dw $080 ;bir_bg dw $090 ;eag_bg dw $0a0 ;adn_bg dw $0b0 ;sag_bg trdata_loc_tbl: dw $020+$0c ;rtu dw $030+$0c ;gki dw $040+$0c ;joe dw $050+$0c ;mik dw $060+$0c ;lee dw $070+$0c ;gen dw $080+$0c ;bir dw $090+$0c ;eag dw $0a0+$0c ;adn dw $0b0+$0c ;sag ;------------------------------- put_set: lea inf_adr,inf1 lea a1,FIGHT_GAUGE_SPCG_ADRS+$40*0+$20 ;$00 & $01 3rd plane bsr put_set_sub lea inf_adr,inf2 lea a1,FIGHT_GAUGE_SPCG_ADRS+$40*2+$20 ;$02 & $03 3rd plane put_set_sub: ldy #SET_GET ;勝ったラウンド数 lda [inf_adr],y beq put_set_sub0 ; pha bsr round_set pla ; dec a beq put_set_sub0 addb a1,#$40 bsr round_set ; put_set_sub0: rts round_set: jsr ex_hmode ; reg #MAWR ldw LOW7UP,a1 ; reg #VWR ldx #16 rnd_set_lop: st1 #$ff st2 #$ff dex bne rnd_set_lop rts ;------------------------------- put_param: jsr clear_moji_cg ; stz moji_x ; jsr put_p1_score ;sprite C.G. No $00~$03 jsr put_p2_score ;sprite C.G. No $04~$07 ; jsr zprs db -1,0,PxHI_COL,"HI",0 ;sprite C.G. No $08 lea score_adr,hiscore jsr put_score ;sprite C.G. No $09~$0b ; jsr put_pl_name ;sprite C.G. No $0c~$0f $10~$13 ; lda moji_x pha jsr zprs db -1,0,TIMES_COL,"TIME",0 ;sprite C.G. No $14~$15 pla sta moji_x jsr put_timer ; jsr put_set ; rts ;-- put_p1_score: lda s_game cmp #2 beq put_sp8 ; jsr zprs db -1,0,PxHI_COL,"P1",0 lea score_adr,inf1+SCORE jmp put_score ; put_p2_score: lda s_game cmp #1 beq put_sp8 ; jsr zprs db -1,0,PxHI_COL,"P2",0 lea score_adr,inf2+SCORE jmp put_score ; put_sp8: jsr zprs db -1,0,PxHI_COL," ",0 rts ;------------------------------- put_pl_name: ldb moji_c,#1 stz moji_y ; lda s_game beq PLAYER1_vs_PLAYER2 dec a beq PLAYER1_vs_ENEMY PLAYER2_vs_ENEMY: jsr zprs db -1,0,NAME_COL db "PLAY","ENEM" db "ER2 ","Y " db 0 rts PLAYER1_vs_ENEMY: jsr zprs db -1,0,NAME_COL db "PLAY","ENEM" db "ER1 ","Y " db 0 rts PLAYER1_vs_PLAYER2: jsr zprs db -1,0,NAME_COL db "PLAY","PLAY" db "ER1 ","ER2 " db 0 rts ;------------------------------- put_timer: jsr zprs db -1,1,TIME_COL," ",0 ; clx put_timer_lop: lda game_in_time,x jsr put_mojis_num inx cpx #3 bcc put_timer_lop stz moji_y rts ;------------------------------- set_bank_4567: lda #4 jsr bank_set inc a tam4 inc a tam5 rts set_bank_3: lda #3 jmp bank_set set_bank_2: lda #2 jmp bank_set ;------------------------------- tfr_fight_gauge_spcg: lea a0,FIGHT_GAUGE_SPCG lea a1,FIGHT_GAUGT_GAUGPCG_ADRS+$40*2+$20 ;$02 & $03 3rd plane put_set_sub: ldy #SET_GET ;勝ったラウンド数 lda [inf_adr],y beq put_set_sub0 ; pha bsr round_set pla ; dec a beq put_set_sub0 addb a1,#$40 bsr round_set ; put_set_sub0: rts round_set: jsr mode_h ; reg #MAWR ldw LOW7UP,a1 ; reg #VWR ldx #16 rnd_set_lop: st1 #$ff st2 #$ff dex bne rnd_set_lop rts ;------------------------------- put_param: jsr clear_moji_cg ; stz moji_x ; jsr put_p1_score ;sprite C.G. No $00~$03 jsr put_p2_score ;sprite C.G. No $04~$07 ; jsr zprs db -1,0,PxHI_COL,SX,OR_MESY,GAME_MESC,"OR",0 jsr zpr db GAME0_MESX,GAME0_MESY,GAME_MESC,"PLAYER1 VS PLAYER2",0 rts ;--------------- put_copyright: jsr zpr db COPY_MESX,COPY_MESY,COPY_MESC,low(Ccp)," CAPCOM/HUDSON",0 rts ;--------------- check_run2 lda joytrg+0 ora joytrg+1 bit #sta bne check_run2_exit ; rts ;zero ; ;one playerで ;2番目のジョイパッドのrunが押されたら ;s_game = 2 にする ; check_run2_exit: lda s_game dec a bne check_run2_exit1 lda joytrg+1 bit #sta beq check_run2_exit1 inc s_game check_run2_exit1: lda #1 rts ;not zero ;--------------- check_sel: lda joytrg+0 ora joytrg+1 bit #sel rts ;zero or not zero ;================================== ; 'capcom' ;================================== mapout: ;-------------------font set lda #$40/8 jsr set_seekpos lea readptr,$4000 lda #$80 jsr read lea a0,bg_font lea a1,BGFONT lea c0,$8000 jsr putvdp ;-------------------bat,color set lda #$c0/8 jsr set_seekpos lea readptr,$4000 lda #$20 jsr read jsr palini lea a0,bg_bat lea a1,0 lea c0,$1000 ;4kB jsr putbat rts ;================================== ; put sprite routine ;================================== move_csr: jsr check_sel bne move_csr1 rts ; move_csr1: lda s_game eor #1 ;0<=>1 sta s_game ; bra put_csr ; put_csr: lda s_game beq put_csr1 ; jsr zpr db CSR_MESX,GAME1_MESY,GAME_MESC,low(Csr),0 jsr zpr db CSR_MESX,GAME0_MESY,GAME_MESC," ",0 rts put_csr1: jsr zpr db CSR_MESX,GAME1_MESY,GAME_MESC," ",0 jsr zpr db CSR_MESX,GAME0_MESY,GAME_MESC,low(Csr),0 rts ;============================= ; set font,bat ;============================= ssp: ldy #0 ssp71: lda [a0],y sta low7up iny lda [a0],y sta hi7up iny bne ssp71 rts ; ; put vdp[a1] <--- memory[a0] c0 bytes putvdp: reg #MAWR ldw low7up,a1 reg #VWR putvd1: bsr ssp inc a0+1 dec c0+1 bne putvd1 rts bsp: ldy #0 bsp71: lda [a0],y sta low7up iny lda [a0],y add #high BGFONT/16 sta hi7up iny bne bsp71 rts putbat: reg #MAWR stz low7up stz hi7up reg #VWR putba1: bsr bsp inc a0+h dec c0+h bne putba1 rts ;========================= ; set color_buf ;========================= palini: lea a0,bg_palet jsr tfr_bgpal jsr clr_sppal lda #$18 jsr set_moji_palet lda #$29 jsr set_moji_palet lda #$3a jsr set_moji_palet lda #$ff sta irq_flag rts ; ;*********************** end of SEL.S ********************************** ;
;s_game = 2 にする ; check_run2_exit: lda s_game dec a bne check_run2_exit1 lda joytrg+1 bit #sta beq check_run2_exit1 inc s_game check_run2_exit1: lda #1 rts ;not zero ;--------------- check_sel: lda joytrg+0 ora joytrg+1 bit #sel rts ;zero or not zero ;================================== ; 'capcom' ;================================== mapout: ;-------------------font set lda #$40/8 jsr set_seekpos lea readptr,$4000 lda #$80 jsr read lea a0,bg_font lea a1,BGFONT lea c0,$8000 db low (%1*2+SPFONTq/32)+(%8 and 1) db (high (%1*2+SPFONTq/32))+%2*8+%3*128+%4*64+%5*16 db %6 db %7 ENDM open_sprite_table: dw ossan_0 dw ossan_1 dw ossan_2 dw ossan_3 dw copyright0 dw copyright1 ;====================================== ; ; object pattrn data ; ; code,/x,/y,cx,cy,ox,oy ; ; jsrspr sub_rutin jump ; jmpspr sub_rutin go to ;===================================== ossan_0: db 6 spriteo $0, 0, 0, 1, 2,0,0,0 spriteo $8, 0, 0, 1, 2,32,0,0 spriteo $10, 0, 0, 1, 2,64,0,0 spriteo $18, 0, 0, 1, 2,96,0,0 spriteo $20, 0, 0, 1, 0,32,48,0 spriteo $22, 0, 0, 1, 0,64,48,0 endspr ossan_1: db 6 spritep $0, 0, 0, 1, 2,0,0,0 spritep $8, 0, 0, 1, 2,32,0,0 spritep $10, 0, 0, 1, 2,64,0,0 spritep $18, 0, 0, 1, 1,96,32,0 spritep $1c, 0, 0, 1, 0,32,48,0 spritep $1e, 0, 0, 1, 0,64,48,0 endspr ossan_2: db 7 spritep $20, 0, 0, 1, 2,16,0,0 spritep $28, 0, 0, 1, 2,48,0,0 spritep $30, 0, 0, 1, 2,80,0,0 spritep $38, 0, 0, 1, 0,16,48,0 spritep $3a, 0, 0, 1, 0,48,48,0 spritep $3c, 0, 0, 1, 0,80,48,0 spritep $3e, 0, 0, 1, 0,112,48,0 endspr ossan_3: db 8 spriteo $0, 0, 0, 1, 2,16,0,0 spriteo $8, 0, 0, 1, 2,48,0,0 spriteo $10, 0, 0, 1, 2,80,0,0 spriteo $18, 0, 0, 1, 2,112,0,0 spriteo $20, 0, 0, 1, 0,16,48,0 spriteo $22, 0, 0, 1, 0,48,48,0 spriteo $24, 0, 0, 1, 0,80,48,0 spriteo $26, 0, 0, 1, 0,112,48,0 endspr copyright0: db 4 spriteq $00, 0, 0, 1, 0,0,0,0 spriteq $04, 0, 0, 1, 0,32,0,0 spriteq $08, 0, 0, 1, 0,64,0,0 spriteq $0c, 0, 0, 1, 0,96,0,0 endspr copyright1: db 4 spriteq $02, 0, 0, 1, 0,0,0,0 spriteq $06, 0, 0, 1, 0,32,0,0 spriteq $0a, 0, 0, 1, 0,64,0,0 spriteq $0e, 0, 0, 1, 0,96,0,0 endspr ; ;*********************** end of OPEN.S ********************************* ;
equ (*-MOJI_CG)/16 h,0C62adr_tbl: dw inf1,inf2 score_adr_tbl: dw inf1+SCORE,inf2+SCORE,hiscore ;- lda_PLAYER_ID: ldy #PLAYER_ID lda [inf_adr],y rts ;- inc_pl_SET_GET ldy #SET_GET lda [inf_adr],y inc a sta [inf_adr],y rts ;- clr_score_bit: lea score_adr,inf1+SCORE bsr clr_score_bit_sub lea score_adr,inf2+SCORE bsr clr_score_bit_sub lea score_adr,hiscore clr_score_bit_sub: ldy #SCORE_KETA-1 clr_score_bit_lop: lda [score_adr],y and #$7f sta [score_adr],y dey bpl clr_score_bit_lop ; rts ;-------------------------- ; sprite table ;-------------------------- FIGHT_SPRITE_TBL: dw massage_spr ;0 ;====================================== ; ; object pattrn data ; ; code,/x,/y,cx,cy,ox,oy ; ; jsrspr sub_routin jump ; jmpspr sub_routin go to ;====================================== ; ; code,/x,/y,cgx,cgy,xoffset,yoffset,colbit sprite MACRO %1,%2,%3,%4,%5,%6,%7,%8 db low (%1*2+MSG_SPCG_ADRS/32)+(%8 and 1) db (high (%1*2+MSG_SPCG_ADRS/32))+%2*8+%3*128+%4*64+%5*16 db %6 db %7 ENDM massage_spr: db 4 sprite $00,norx,nory,cgx2,cgy4,16,8,col0 sprite $08,norx,nory,cgx2,cgy4,48,8,col0 sprite $10,norx,nory,cgx2,cgy4,80,8,col0 sprite $18,norx,nory,cgx2,cgy4,112,8,col0 endspr ; ;********************** end of FIGHT1.S ********************************
;************************************************ ;* ================================ * ;* project :ストリート・ファイター * ;* ================================ * ;* group :STAGE.MAK/STAGE.LNK * ;* file :STAGE.S * ;* date :S63/4 * ;* coding :Alfa HaHi * ;* * ;************************************************ ;=============================== ; include file ;=============================== include 7UP.H include BIOSW.H include WORK.H ;======================= ; boot define ;======================= defseg stageboot seg stageboot dw STAGE_ID ;stage id dw init_stage ;entry db $ff,$f8,$01,$02,$03,$04,$05,$00 ;mapping db $01,$a0,$20 ;load sct/adrs(pg)/length(pg) db 0 ;load end db "INIT STAGE '88/3/31 Hudson/Alfa System" dw 256 ; ; 00 +---------------+ ; |boot | ; 10 +---------------+ ; (8000)|rtutbl | ; 14 +---------------+ ; (a000)|gkitbl | ; 18 +---------------+ ; (c000)|joetbl | ; 1c +---------------+ ; (e000)|miktbl | ; 20 +---------------+ ;(10000)|leetbl | ; 24 +---------------+ ;(12000)|gentbl | ; 28 +---------------+ ;(14000)|birtbl | ; 2c +---------------+ ;(16000)|eagtbl | ; 30 +---------------+ ;(18000)|adntbl | ; 34 +---------------+ ;(1a000)|sagtbl | ; 38 +---------------+ ;(1c000)| | ; 3c +---------------+ ;(1e000)| | ; +---------------+ ; ;======================= ; work ;======================= seg dseg data_sel ds 1 ;=course_select/2*4+nando ;======================= ; program ;======================= seg cseg include mul8.icl init_stage: jsr enemy_ctrl_load jsr init_set_get jsr set_stage_no2 jsr set_country_scene stz round_no rts ;----------------------- init_set_get: stz inf1+SET_GET stz inf2+SET_GET rts ;----------------------- set_stage_no2: lda stage_no lsr a sta stage_no2 rts ;----------------------- ;course_select と stage_no から ;country と scene をセットする ;----------------------- set_country_scene: lda course_select ;course_select*5 asl a asl a add course_select add stage_no2 ;+stage_no2(stage_no/2) tax lda course_country_tbl+1,x sta next_country lda course_country_tbl,x sta country ; asl a ;country*2 sta wk0 lda stage_no ;+(stage_no mod 2) and #1 add wk0 tax lda country_scene_tbl,x sta scene rts ;- JAP equ 0 USA equ 1 CHI equ 2 ENG equ 3 TAI equ 4 ;- course_country_tbl db JAP,USA,CHI,ENG,TAI ;course0 db CHI,ENG,JAP,USA,TAI ;course1 db USA,JAP,ENG,CHI,TAI ;course2 db ENG,CHI,USA,JAP,TAI ;course3 ;- RTU equ 0 GKI equ 1 JOE equ 2 MIK equ 3 LEE equ 4 GEN equ 5 BIR equ 6 EAG equ 7 ADN equ 8 SAG equ 9 ;- country_scene_tbl: db RTU,GKI db JOE,MIK db LEE,GEN db BIR,EAG db ADN,SAG ;------------------------------- DATA_TOP equ $4000 TKxx_MAWAI_RATE equ DATA_TOP+0 TKxx_MAWAI_DATA equ TKxx_MAWAI_RATE+16*8 TKxx_IDO_KYORI equ TKxx_MAWAI_DATA+6 TKxx_IDO_PTN equ TKxx_IDO_KYORI+8 TKxx_RIDATU_PTN equ TKxx_IDO_PTN+48*8 Txx_ATTACK_RATE equ TKxx_RIDATU_PTN+32*8 Txx_DEFENS_RATE equ Txx_ATTACK_RATE+16*8 Txx_DEFENSE_UP equ Txx_DEFENS_RATE+16*8 Txx_DEFENSE_DWN equ Txx_DEFENSE_UP+80*8 Txx_ATTACK_A equ Txx_DEFENSE_DWN+80*8 Txx_ATTACK_B equ Txx_ATTACK_A+240*8 Txx_ATTACK_C equ Txx_ATTACK_B+240*8 DAMPTN_Txx_TBL equ Txx_ATTACK_C+240*8 OUTPTN_Txx_TBL equ DAMPTN_Txx_TBL+3*13 ; equ OUTPTN_Txx_TBL+3*11 ; enemy_ctrl_load: jsr load_enemy_ctrl_data ; lda nando and #3 sta wk0 lda course_select and #2 asl a ora wk0 sta data_sel ; jsr tfr_mawai_data_tbl jsr tfr_mawai_rate_tbl jsr tfr_ido_kyori_tbl jsr tfr_ido_pattern_tbl jsr tfr_ridatu_ptn_tbl jsr tfr_attack_rate_tbl jsr tfr_defense_rate_tbl jsr tfr_defense_up_tbl jsr tfr_defense_dwn_tbl jsr tfr_attack_A_ptn jsr tfr_attack_B_ptn jsr tfr_attack_C_ptn jsr tfr_damtk_ptn_tbl jsr tfr_outtk_ptn_tbl ; rts ;-- load_enemy_ctrl_data: ldx scene lda enemy_ctrl_data_loc,x jsr set_seekpos lea readptr,DATA_TOP ; lda #$30 jmp read ;-- enemy_ctrl_data_loc: db $10 ;rtu db $14 ;gki db $18 ;joe db $1c ;mik db $20 ;lee db $24 ;gen db $28 ;bir db $2c ;eag db $30 ;adn db $34 ;sag ;--------------------------------------- ;メモリ転送サブルーチン ; input :a0=source address ; a1=distination address ; len=length ;--------------------------------------- tfrsub: cly ldx len+l beq tfrsub1 bsr tfrsubs tfrsub1: lda len+h beq tfrsub3 tfrsub2: bsr tfrsubs dec len+h bne tfrsub2 tfrsub3: rts ;- tfrsubs: lda [a0],y sta [a1],y iny bne tfrsubs1 inc a0+h inc a1+h tfrsubs1: dex bne tfrsubs ; rts ;------------------------------- ;データ選択&転送マクロ ;------------------------------- seltfr MACRO srctbl,dsttbl,size ldb wk0,data_sel ldb wk1,#size jsr mul_wk0_wk1 lda wk2+l add #low srctbl sta a0+l lda wk2+h add #high srctbl sta a0+h ; lea a1,dsttbl lea len,size jmp tfrsub ENDM ;-- tfr_mawai_data_tbl: lea a0,TKxx_MAWAI_DATA lea a1,mawai_data_tbl lea len,6 jmp tfrsub ;-- tfr_ido_kyori_tbl: lea a0,TKxx_IDO_KYORI lea a1,ido_kyori_tbl lea len,6 jmp tfrsub ;-- tfr_damtk_ptn_tbl lea a0,DAMPTN_Txx_TBL lea a1,damtk_ptn_tbl lea len,13*3 jmp tfrsub ;-- tfr_outtk_ptn_tbl lea a0,OUTPTN_Txx_TBL lea a1,outtk_ptn_tbl lea len,11*3 jmp tfrsub ;-- tfr_mawai_rate_tbl: seltfr TKxx_MAWAI_RATE,mawai_rate_tbl,16 ;-- tfr_ido_pattern_tbl: seltfr TKxx_IDO_PTN,ido_pattern_tbl,48 ;-- tfr_ridatu_ptn_tbl: seltfr TKxx_RIDATU_PTN,ridatu_ptn_tbl,32 ;-- tfr_attack_rate_tbl: seltfr Txx_ATTACK_RATE,attack_rate_tbl,16 ;-- tfr_defense_rate_tbl: seltfr Txx_DEFENS_RATE,defense_rate_tbl,16 ;-- tfr_defense_up_tbl: seltfr Txx_DEFENSE_UP,defense_up_tbl,80 ;-- tfr_defense_dwn_tbl: seltfr Txx_DEFENSE_DWN,defense_dwn_tbl,80 ;-- tfr_attack_A_ptn: seltfr Txx_ATTACK_A,attack_A_ptn,240 ;-- tfr_attack_B_ptn: seltfr Txx_ATTACK_B,attack_B_ptn,240 ;-- tfr_attack_C_ptn: seltfr Txx_ATTACK_C,attack_C_ptn,240 ; ;*********************** end of STAGE.S ******************************** ;1: bsr ssp inc a0+1 dec c0+1 bne putvd1 rts bsp: ldy #0 bsp71: lda [a0],y sta low7up iny lda [a0],y add #high BGFONT/16 sta hi7up iny bne bsp71 rts putbat: reg #MAWR stz low7up stz hi7up reg #VWR putba1: bsr bsp inc a0+h dec c0+h bne putba1 rts ;========================= ; set color_buf ;========================= palini: lea a0,bg_palet jsr tfr_bgpal jsr clr_sppal lda #$18 jsr set_moji_palet lda #$29 jsr set_moji_palet lda #$3a jsr set_moji_palet lda #$ff sta irq_flag rts ; ;*********************** end of SEL.S **********************************
******************************** ; TACK_RATE,attack_rate_tbl,16 ;-- tfr_defense_rate_tbl: seltfr Txx_DEFENS_RATE,defense_rate_tbl,16 ;-- tfr_defense_up_tbl: seltfr Txx_DEFENSE_UP,defense_up_tbl,80 ;-- tfr_defense_dwn_tbl: seltfr Txx_DEFENSE_DWN,defense_dwn_tbl,80 ;-- tfr_attack_A_ptn: seltfr Txx_ATTACK_A,attack_A_ptn,240 ;-- tfr_attack_B_ptn: seltfr Txx_ATTACK_B,attack_B_ptn,240 ;-- tfr_attack_C_ptn: seltfr Txx_ATTACK_C,attack_C_ptn,240 ; ;*********************** end of ----------------- ;load main & goto main_star
;============================== ; RYUGKI ; sprite table & font data ;============================== include spmac.h f1_ad equ $0000 ; 84個 f2_ad equ $0150 ; 319個 f3_ad equ $0B48 ; 195個 f4_ad equ $146C ; 33個 f5_ad equ $167C ; sprite palette controle table ;============================== defseg spr0seg seg spr0seg dw fighter_tbl db $46,$64 spr_tbl0: dw spctbl1,spctbl2,spctbl3,spctbl3 spr_tbl2: dw f1_ad,f2_ad,f3_ad,f4_ad dw $A00/2+$3000 dw dh0000 pal_tbl: db 000h,002h,003h,0 spctbl1 dw 00202h,02202h,00282h,00202h,00202h,00202h,00202h,02222h dw 00202h,00202h,02202h,08082h,00202h,08202h,009A2h,02202h dw 02222h,02222h,03E3Eh,02222h,02222h,02822h,00808h,00828h dw 00808h,00A0Ah,00A0Ah,00A0Ah,00A0Ah,00A0Ah,00A0Ah,00A0Ah dw 00A0Ah,00A0Ah,00A0Ah,00A0Ah,00A0Ah,00A0Ah,00A0Ah,00A0Ah dw 00A0Ah,00A0Ah spctbl2 dw 01C1Ch,0131Ch,01313h,01013h,01000h,01010h,01010h,01000h dw 0101Ch,00010h,01010h,01010h,01010h,01010h,01010h,01010h dw 01013h,00000h,0101Fh,01010h,01010h,01010h,01010h,01010h dw 01010h,0101Ch,01010h,01010h,01000h,01010h,00010h,01010h dw 01000h,00000h,01010h,01310h,00010h,01010h,01010h,01010h dw 01010h,01010h,01010h,01C10h,01010h,01F0Fh,01010h,00010h dw 00000h,01010h,01010h,01010h,01010h,01010h,01010h,0031Ch dw 01310h,01000h,01010h,00010h,01010h,01010h,01000h,01010h dw 01010h,01010h,01010h,01310h,01313h,0001Fh,01313h,01313h dw 00313h,01313h,01313h,00313h,01313h,00313h,01313h,01313h dw 01313h,01310h,00313h,0130Fh,00313h,01303h,01313h,01313h dw 01303h,01313h,01F13h,01313h,01313h,01303h,01313h,01313h dw 01313h,01303h,01313h,01313h,01313h,01313h,01313h,01010h dw 01310h,00303h,01313h,01313h,01313h,01313h,01313h,01313h dw 01313h,01313h,01313h,00000h,00000h,00000h,00000h,00000h dw 00000h,01300h,01313h,01013h,01013h,01310h,01013h,01010h dw 01310h,01010h,01310h,01313h,01013h,01010h,01010h,01010h dw 01013h,01013h,01013h,01310h,01310h,01310h,01010h,01010h dw 01010h,01010h,01010h,01010h,01010h,01010h,01010h,01010h dw 01010h,01010h,01010h,01010h,01010h,01010h,01010h db 010h spctbl3 dw 01A1Ah,0121Ah,01202h,00E12h,01E1Eh,01202h,01E1Ah,00212h dw 01212h,01E02h,01E12h,0121Ah,01212h,01202h,01212h,00E02h dw 01E12h,01202h,01212h,01E1Eh,01A1Ah,01A1Eh,01212h,00212h dw 01212h,01E12h,00E02h,01E12h,01202h,01212h,00212h,01212h dw 00212h,0020Eh,0121Eh,01212h,01212h,00212h,00E02h,01212h dw 00A0Ah,01212h,00212h,01212h,01A02h,01212h,01212h,01212h dw 01202h,01A12h,00A1Ah,00212h,01212h,00212h,00202h,01B1Bh dw 01202h,00212h,01202h,01212h,00212h,01212h,00202h,01202h dw 01202h,01212h,01E1Ah,0121Ah,01212h,01212h,00212h,00212h dw 01202h,01212h,01212h,01212h,01212h,00212h,00202h,01202h dw 01212h,01212h,01212h,01212h,01212h,01212h,01212h,00202h dw 01212h,01212h,00212h,01202h,01212h,01202h,00212h,01202h dw 01212h db 012h fighter_tbl: dw ch0000,ch0001,ch0002,ch0003,ch0004,ch0005,ch0006,ch0000 ;ryu dw ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000 ; dw ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000 ; 10 dw ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000 ; dw ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000 ; 20 dw ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000 ; dw ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000 ; 30 dw ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000,ch0000 ; dw ch0000,ch0000,ch0000,ch0000,ch0007,ch0008 ; 40 dw ch0009,ch000A,ch000B,ch0009,ch000C,ch0009,ch0009,ch0009 ; geki dw ch0009,ch0009,ch0009,ch0009,ch0009,ch0009,ch0009,ch000D ; dw ch0009,ch0009,ch0009,ch0009,ch0009,ch0009,ch0012,ch0009 ; 10 dw ch0009,ch0009,ch0009,ch000E,ch000F,ch0010,ch0011 ; ;====================================== ; ; object pattern data ; ;spr cgx,cgy,X offset,Y offset ;dw code(pal(2),plane(2),number(12)) ;jsrspr /x,/y,X offset,Y offset,label ;jmpspr /x,/y,X offset,Y offset,label ; ;====================================== ; ; ; dh0000: spal 0 sprkosu 2 spr 2,2,-7,-8 dw 02000h,03000h,02001h,03001h spr 1,1,-4,8 dw 0Jl