This is a sub-page of Fighting Street.
|
|
To do: |
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