Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 33 additions & 33 deletions src/Action.s
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ GetNextMov:

_GetNextMov_newAct:
move.w d0, Object.PrevChCode(a4)
clr.w Object.MovOffsetFromActBase(a4) | �� bank(2), ���� ACT base ��ƫ��
clr.w Object.MovOffsetFromActBase(a4) | bank(2), 基于 ACT base 的偏移
clr.b Object.SpanTime(a4) | clear spanTime
clr.b Object.HitBoxFlag(a4) | clear HitFlag
clr.b Object.RecoveryFlags(a4) | clear FreezeTime
clr.w Object.MovIndexInAct(a4) | ��ǰִ�е���mov���, (������ACT��0,1,2...����)
clr.w Object.MovIndexInAct(a4) | 当前执行到的mov编号, (在整个ACT中0,1,2...排列)
bsr.w _GetNextMov_loadNewMov
moveq #0, d0
rts
Expand All @@ -47,39 +47,39 @@ _GetNextMov_zeroRet: | CODE XREF: GetNextMov+3Cj
| ---------------------------------------------------------------------------

_GetNextMov_nextMov: | CODE XREF: GetNextMov+42j
addq.w #6, Object.MovOffsetFromActBase(a4) | �� bank(2), ���� ACT base ��ƫ��
addq.w #6, Object.MovOffsetFromActBase(a4) | bank(2), 基于 ACT base 的偏移

_GetNextMov_loadNewMov: | CODE XREF: GetNextMov+30p
jsr GetMovOffset | ret:
| a0: Mov offset
clr.w d0
move.b (a0), d0
bpl.s _GetNextMov_setSpanTime
neg.b d0 | ȡ����ֵ
subq.w #1, d0 | ��һ
neg.b d0 | 取绝对值
subq.w #1, d0 | 减一
add.w d0, d0
add.w d0, d0 | ��4��Ϊ����ֵ
add.w d0, d0 | 乘4作为索引值
movea.l off_58C4(pc,d0.w), a2
jsr (a2)
bra.s _GetNextMov_sameAct
| ---------------------------------------------------------------------------
off_58C4:.long _GetNextMov_againThisAct | FF��ʾ��ǰAct��ѭ��ִ�е�
.long _GetNextMov_endThisAct | FE��ʾ��ǰAct����
.long _GetNextMov_getBox | FD, �ж���־����6���ֽڰ������ж���ʽ���ж���
.long _GetNextMov_loadSound | FC ��Ч��־
.long _GetNextMov_deltaX | FB λ�Ʊ�־
.long _GetNextMov_loadGraph | FA ����ͼ���־
off_58C4:.long _GetNextMov_againThisAct | FF表示当前Act是循环执行的
.long _GetNextMov_endThisAct | FE表示当前Act结束
.long _GetNextMov_getBox | FD, 判定标志,这6个字节包含了判定方式和判定框
.long _GetNextMov_loadSound | FC 音效标志
.long _GetNextMov_deltaX | FB 位移标志
.long _GetNextMov_loadGraph | FA 附加图像标志
| ---------------------------------------------------------------------------

_GetNextMov_setSpanTime:
move.b d0, Object.SpanTime(a4)
move.b 1(a0), Object.HitSpecialStatus(a4)
move.b 4(a0), Object.HitBoxFlag(a4)
move.b 5(a0), Object.RecoveryFlags(a4) | bits0-1: 1, ���Կ�׷��; 2, ����׷��
| bit2: 1, ��cancel�ӱ�ɱ��
| bit3: 1, ��cancel�����⼼
| bits4-6: Ӳֱ����
addq.w #1, Object.MovIndexInAct(a4) | ��ǰִ�е���mov���, (������ACT��0,1,2...����)
move.b 5(a0), Object.RecoveryFlags(a4) | bits0-1: 1, 禁对空追打; 2, 倒地追加
| bit2: 1, 可cancel接必杀技
| bit3: 1, 可cancel接特殊技
| bits4-6: 硬直类型
addq.w #1, Object.MovIndexInAct(a4) | 当前执行到的mov编号, (在整个ACT中0,1,2...排列)
move.w 2(a0), d1 | graph Index
move.w Object.ChCode(a4), d2
move.w #1, d0
Expand All @@ -94,8 +94,8 @@ _GetNextMov_bankSwitchLoop:
movea.l (a0,d2.w), a0
mulu.w #6, d1
adda.w d1, a0
move.l a0, Object.pGraphInfoEntry(a4) | ��ָ��4�ֽ�Xoffset,Yoffset
| Ȼ����һ��word�� SCB1 data offset from obj data base
move.l a0, Object.pGraphInfoEntry(a4) | 先指向4字节Xoffset,Yoffset
| 然后是一个word的 SCB1 data offset from obj data base
move.w #2, d0

_GetNextMov__GetNextMov_bankSwitchLoop: | CODE XREF: GetNextMov+ECj
Expand All @@ -108,7 +108,7 @@ _GetNextMov__GetNextMov_bankSwitchLoop: | CODE XREF: GetNe

_GetNextMov_againThisAct:
move.w #0xFFFA, Object.MovOffsetFromActBase(a4) | -6
clr.w Object.MovIndexInAct(a4) | ��ǰִ�е���mov���, (������ACT��0,1,2...����)
clr.w Object.MovIndexInAct(a4) | 当前执行到的mov编号, (在整个ACT中0,1,2...排列)
rts
| ---------------------------------------------------------------------------

Expand Down Expand Up @@ -144,9 +144,9 @@ _GetNextMov_loadGraph:
bne.s _GetNextMov_skipRet
movem.l d1/a1, -(sp) | pushad
move.l a0, -(sp) | push a0
| a0: 6�ֽ����׵�ַ
| a0: 6字节组首地址
move.w (a0), d0
andi.w #0xFF, d0 | d0.low: ����Ч���ֽ�
andi.w #0xFF, d0 | d0.low: 附加效果字节
add.w d0, d0
add.w d0, d0
lea (ExtendEffectPropareTable).l, a0
Expand All @@ -164,15 +164,15 @@ _GetNextMov_loadGraph:
move.b A5Seg.TempExGraphMask(a5), d0
or.b d0, Object.ExGraphFlags(a1) | bit0: 1, need to update SCB1
| bit1: 1, do not use extra graph
| bit2: 1, ʹ�û��Ʋ㱳��
| bit2: 1, 使用缓移层背景
| bit3: ?
| bit4: 1, use own Shrinking, do not set InScreenX,Y ��Ӱ��
| bit4: 1, use own Shrinking, do not set InScreenX,Y 倒影用
| bit5: 1, visible during freeze
| bit7: 1, use sub SCB3 buf
movea.l (sp)+, a0 | pop a0
move.b 1(a0), Object.selfBuf2+1(a1)
move.w 2(a0), Object.OriX(a1) | ��ͼԭ��(ʮ��)�ĺ�����, �����߼�λ��, ���ص�λ
move.w 4(a0), Object.OriY(a1) | ��ͼԭ��(ʮ��)��������, �����߼��߶�, ���ص�λ
move.w 2(a0), Object.OriX(a1) | 贴图原点(十字)的横坐标, 区域逻辑位置, 像素单位
move.w 4(a0), Object.OriY(a1) | 贴图原点(十字)的纵坐标, 区域逻辑高度, 像素单位
movem.l (sp)+, d1/a1 | popad

_GetNextMov_skipRet: | CODE XREF: GetNextMov+172j
Expand Down Expand Up @@ -216,25 +216,25 @@ GetMovOffset:

_GetMovOffset_swithLoop: | CODE XREF: GetMovOffset+2Cj
move.w d0, (0x2FFFFE).l | BankSwitch(1)
| ��p2 rom �� 100000 offset ���뵽 0x200000, 0x2FFFFF λ��
| p2 rom δ����, ��ʱ����ڴ� 0x200000 λ�ÿ��Կ��� p2 rom �� 100000 offset ����
| 将p2 rom 100000 offset 载入到 0x200000, 0x2FFFFF 位置
| p2 rom 未加密, 此时检测内存 0x200000 位置可以看到 p2 rom 100000 offset 镜像
cmp.w (0x200000).l, d0
bne.s _GetMovOffset_swithLoop | switch ʧ�������¼���
bne.s _GetMovOffset_swithLoop | switch 失败则重新加载
lea (0x250000).l, a0 | == p2rom offset: 150000
move.l (a0,d1.w), Object.pGraphDataSubmenuBase(a4) | �� Obj �� SCB1 ���ݵ���ʼ��ַ
| (��ɫ��, ��������, ����, �߶�, ����...)
move.l (a0,d1.w), Object.pGraphDataSubmenuBase(a4) | Obj SCB1 数据的起始地址
| (调色盘, 解析方法, 宽度, 高度, 数据...)
move.w #2, d0

__GetMovOffset_swithLoop: | CODE XREF: GetMovOffset+4Aj
move.w d0, (0x2FFFFE).l | BankSwitch(2)
cmp.w (0x200000).l, d0
bne.s __GetMovOffset_swithLoop | BankSwitch(2)
lea (0x200002).l, a0 | == p2rom offset: 200002
movea.l (a0,d1.w), a0 | �����ʼ��ַ
movea.l (a0,d1.w), a0 | 人物初始地址
add.w d2, d2
add.w d2, d2
movea.l (a0,d2.w), a0 | a0: Act Base
adda.w Object.MovOffsetFromActBase(a4), a0 | �� bank(2), ���� ACT base ��ƫ��
adda.w Object.MovOffsetFromActBase(a4), a0 | bank(2), 基于 ACT base 的偏移
rts
| End of function GetMovOffset

Expand Down
34 changes: 17 additions & 17 deletions src/Backgroud.s
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ InitBackGroundLayer5:
| ret:
| a1: screen obj
InitBackGroundLayer:
lea A5Seg.BackGroundObjLayer0(a5), a1 | ��㱳��Obj
lea A5Seg.BackGroundObjLayer0(a5), a1 | 最顶层背景Obj
move.w d0, -(sp)
lsl.w #8, d0 | * 256
adda.w d0, a1 | a1: the layer obj
Expand Down Expand Up @@ -117,7 +117,7 @@ InitLayerObj:
move.w d0, ScreenObj.SCB3UpdateVramAddr(a4)
addi.w #0x200, d0
move.w d0, ScreenObj.SCB4UpdateVramAddr(a4)
|move.w (a0)+, ScreenObj.WidthInTiles(a4) | ͼ����Ȱ������ٸ�tile
|move.w (a0)+, ScreenObj.WidthInTiles(a4) | 图层宽度包含多少个tile
|move.w (a0)+, ScreenObj.HeightInTiles(a4) | always $10
|moveq #0, d0
|move.w (a0)+, d0
Expand All @@ -132,13 +132,13 @@ InitLayerObj:
|lsl.w #4, d0
|move.w d0, ScreenObj.Y(a4) | layer's Y, neg mean down, in pixels
|subi.w #0x10, d0
|move.w d0, ScreenObj.TopPixelsY(a4) | ����ʱʹ��, 16���ض���
|clr.l ScreenObj.YFromGround(a4) | ��Ļ�����Ϲ���ƫ��
|move.w d0, ScreenObj.TopPixelsY(a4) | 更新时使用, 16像素对齐
|clr.l ScreenObj.YFromGround(a4) | 屏幕的向上滚动偏移
|addi.w #0x120, d0
|move.w d0, ScreenObj.BottomPixelsY(a4)
|move.l a0, ScreenObj.pBackgroundSCB1Data(a4) | p1 rom �б����SCB1 ��̬ rom ����
|move.l a0, ScreenObj.pBackgroundSCB1Data(a4) | p1 rom 中保存的SCB1 静态 rom 数据
|move.w #0x20, ScreenObj.BackgroundSpriteHeight(a4)
move.w #0xFFFF, ScreenObj.ShrinkRate(a4) | �����������
move.w #0xFFFF, ScreenObj.ShrinkRate(a4) | 人物整体比例
|clr.l ScreenObj.VertSpriteDeltaYBuf(a4)
|clr.l ScreenObj.VertSpriteDeltaYBuf+4(a4)
|clr.l ScreenObj.VertSpriteDeltaYBuf+8(a4)
Expand All @@ -147,7 +147,7 @@ InitLayerObj:
|clr.l ScreenObj.field_F4(a4)
|clr.l ScreenObj.field_F8(a4)
|clr.l ScreenObj.field_FC(a4)
clr.w A5Seg.GlobalCamaraYDelta(a5) | ȫ�־�ͷ��Yƫ��
clr.w A5Seg.GlobalCamaraYDelta(a5) | 全局镜头的Y偏移
rts
| End of function InitLayerObj

Expand Down Expand Up @@ -240,7 +240,7 @@ LoadBckgrdSCB1data:
movea.l ScreenObj.pBackgroundSCB1Data(a4), a0
| move.w ScreenObj.Player2TilePaletteDelta(a4), d3 | player1: $00
| player2: $20
| ��Ӧ A5Seg.GlobalTilePalette��Paletteƫ����
| 对应 A5Seg.GlobalTilePalette的Palette偏移量
| clr.b d3
move.w #1, 2(a1)

Expand Down Expand Up @@ -313,24 +313,24 @@ _LoadSCB3_4fromScreenObj_addLoop:
move.w d0, (a0)+
move.w d0, d7
move.w ScreenObj.Y(a4), d0 | layer's Y, neg mean down, in pixels
sub.w ScreenObj.YFromGround(a4), d0 | ��Ļcamara�����Ϲ���ƫ��
sub.w ScreenObj.YFromGround(a4), d0 | 屏幕camara的向上滚动偏移
move.b ScreenObj.ShrinkRate+1(a4), d1
lsl.w #8, d1
| cmpi.w #0xFF00, d1

add.w A5Seg.GlobalCamaraYDelta(a5), d0 | ȫ�־�ͷ��Yƫ��, �����Ч����, neg ��ʾ��ͷ����
subi.w #0x10, d0 | �Ϸ�0x10���ز���ʾ��
add.w A5Seg.GlobalCamaraYDelta(a5), d0 | 全局镜头的Y偏移, 如地震效果等, neg 表示镜头上移
subi.w #0x10, d0 | 上方0x10像素不显示区
lsl.w #7, d0
move.w d0, d1
move.w d7, d0
lea A5Seg.BackgroundSpritesXTempBuf(a5), a1
moveq #0, d4
tst.b A5Seg.VideoSpecialModes(a5) | bit0: 1, not show back obj
| bit1: 1, ��ʾ��������
| bit1: 1, 显示分数排名
| bit2: 1, demo mod
| bit3: 1, not show coin and difficulty
| bit4: 1, role fast speed
| bit6: 1, 3������
| bit6: 1, 3倍慢速
| bit7: 1, not show background
bmi.s _LoadSCB3_4fromScreenObj_testXoverflow
btst #0, ScreenObj.Flag(a4) | bit0: 1, do not show this layer
Expand Down Expand Up @@ -436,7 +436,7 @@ BackGroundLayerRoutine: |0x2110
| d0: addr
| d1: width - 1
| d2: height - 1
move.l #_BackGroundLayerRoutine_step2, ScreenObj(a4) | ������
move.l #_BackGroundLayerRoutine_step2, ScreenObj(a4) | 主例程

_BackGroundLayerRoutine_step2:
move.w ScreenObj.VRamBaseOffsetInSCB1(a4), d0
Expand All @@ -447,7 +447,7 @@ _BackGroundLayerRoutine_step2:
| bit1: Vertical flip
| bit2: 2bit Auto-anim
| bit3: 3bit Auto-anim
| ʵ������SCB1 tile �ڶ�word �ĵ��ֽ�����
| 实际上是SCB1 tile 第二word 的低字节属性
| bne.s _BackGroundLayerRoutine_flip
jsr LoadBckgrdSCB1data | params:
| a4: screen obj
Expand All @@ -465,7 +465,7 @@ _BackGroundLayerRoutine_step3:
| | bit5: 1, do not ... ?
| | bit6: 1, sticky
| | bit7: 0, do not use layer proc
| move.l #loc_E646, ScreenObj(a4) | ������
| move.l #loc_E646, ScreenObj(a4) | 主例程
| bra.s _BackGroundLayerRoutine_step4
| ---------------------------------------------------------------------------

Expand All @@ -476,7 +476,7 @@ _BackGroundLayerRoutine_step3:
| | bit5: 1, do not ... ?
| | bit6: 1, sticky
| | bit7: 0, do not use layer proc
| move.l #_BackGroundLayerRoutine_step4, ScreenObj(a4) | ������
| move.l #_BackGroundLayerRoutine_step4, ScreenObj(a4) | 主例程

_BackGroundLayerRoutine_step4: | CODE XREF: BackGroundLayerRoutine+68j
| BackGroundLayerRoutine+76j
Expand Down
Loading