Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Castlevania Harmony of Dissonance
- 自機座標、
- 自機壁当たり判定、
- グリッド、
- 自機攻撃判定、
- 自機のスピード、
- 敵機の攻撃受領判定を表示します。
- Created by Robert_Ordis
- 2012/09/11(TUE)
- ]]--
- while (true) do
- if(movie.active()==true) then
- --カメラのXとYを読み込んでグリッドを表示。
- gridx=memory.readbyte(0x03072b2C)%16
- gridy=memory.readbyte(0x03072B2E)%16
- for line=0,255,16 do
- gui.line(0,line-gridy,255,line-gridy,0x00FFFF55)
- gui.line(line-gridx,0,line-gridx,255,0x00FFFF55)
- gui.line(0,line-gridy+8,255,line-gridy+8,0x00FFFF33)
- gui.line(line-gridx+8,0,line-gridx+8,255,0x00FFFF33)
- end
- --自機の情報をいろいろと表示。
- currentHP=memory.readword(0x0201854E)
- MaxHP=memory.readword(0x02018786)
- currentMP=memory.readword(0x02018550)
- MaxMP=memory.readword(0x02018788)
- currentHeart=memory.readword(0x02018794)
- MaxHeart=memory.readword(0x0201878A)
- RightLeft=memory.readbyte(0x02000478) --0x40以上がLeft
- --自機のスピード表示
- myspeedx=memory.readwordsigned(0x0200046A)
- myspeedy=memory.readwordsigned(0x0200046E)
- myspeeddotx=(memory.readword(0x02000468))/65536
- myspeeddoty=(memory.readword(0x0200046C))/65536
- --自機攻撃の当たり判定の元
- mt1=memory.readbytesigned(0x03001A28)
- mt2=memory.readbytesigned(0x03001A29)
- mt3=memory.readbytesigned(0x03001A2A)
- mt4=memory.readbytesigned(0x03001A2B)
- --時期の壁当たり判定の元
- MyJudgeLeftEdge=memory.readwordsigned(0x03001A20)
- MyJudgeRightEdge=memory.readwordsigned(0x03001A24)
- MyJudgeUpEdge=memory.readwordsigned(0x03001A22)
- MyJudgeDownEdge=memory.readwordsigned(0x03001A26)
- --さっきの情報を総括して表示。
- if( RightLeft>=64 ) then
- --左向き
- gui.box(MyJudgeRightEdge-1,MyJudgeUpEdge+3,MyJudgeLeftEdge+2,MyJudgeDownEdge,0xff00ffff)
- hanteir=MyJudgeRightEdge-mt1-6-1
- hanteiu=MyJudgeDownEdge+(mt2)+1
- hanteil=hanteir-mt3+1
- hanteid=hanteiu+(mt4)-1
- gui.box(hanteil,hanteiu,hanteir,hanteid,0x00ff00ff)
- else
- --右向き
- gui.box(MyJudgeLeftEdge+2,MyJudgeUpEdge+3,MyJudgeRightEdge-1,MyJudgeDownEdge,0xff00ffff)
- hanteil=MyJudgeLeftEdge+mt1+6
- hanteiu=MyJudgeDownEdge+(mt2)+1
- hanteir=hanteil+mt3-1
- hanteid=hanteiu+(mt4)-1
- gui.box(hanteil,hanteiu,hanteir,hanteid,0x00ff00ff)
- end
- j=0
- k=0
- --敵機などのオブジェクトの情報
- for i=10,247,1 do
- --+78→左右どっちを向いている?
- eneNumber=memory.readbyte(0x02000028+(i*0x00000080))
- if(eneNumber>0) then
- --敵機画面上座標表示
- enedispx=memory.readwordsigned(0x02000062+(i*0x00000080))
- enedispsubx=memory.readword(0x02000060+(i*0x00000080))/65536
- enedispsuby=memory.readword(0x02000060+4+(i*0x00000080))/65536
- enedispy=memory.readwordsigned(0x02000062+4+(i*0x00000080))
- enehp=memory.readwordsigned(0x02000054+(i*0x00000080))
- --敵機攻撃受領判定の元。座標からどれだけずれてるか(eneJudgeStart)
- --eneJudgeStartからどれだけの範囲で判定があるか(eneJudgeRange)
- eneJudgeStartX=memory.readbytesigned(0x030019EC+i*00000008)
- eneJudgeStartY=memory.readbytesigned(0x030019ED+i*00000008)
- eneJudgeRangeX=memory.readbytesigned(0x030019EE+i*00000008)
- eneJudgeRangeY=memory.readbytesigned(0x030019EF+i*00000008)
- eneRightLeft=memory.readbyte(0x02000078+(i*0x00000080))
- --攻撃受領判定の表示
- if(eneRightLeft<0x40) then
- eneJudgeX1=enedispx+eneJudgeStartX-1
- eneJudgeX2=eneJudgeX1+eneJudgeRangeX
- eneJudgeY1=enedispy+eneJudgeStartY
- eneJudgeY2=eneJudgeY1+eneJudgeRangeY
- else
- eneJudgeX1=enedispx-eneJudgeStartX
- eneJudgeX2=eneJudgeX1-eneJudgeRangeX
- eneJudgeY1=enedispy+eneJudgeStartY
- eneJudgeY2=eneJudgeY1+eneJudgeRangeY
- end
- --敵の攻撃受領判定を表示してみるテスト。
- gui.fillbox(eneJudgeX1,eneJudgeY1,eneJudgeX2,eneJudgeY2,0x00000088)
- --gui.text(enedispx,enedispy,"Address\n" .. string.format("0x%08x\n0x%08x\n%x",0x02000000+i*0x00000080,0x030019E8+i*0x00000008,i))
- --敵機HPの表示。ただしHP>0のものに限る
- if( enehp>0 ) then
- if( j>16 ) then
- k=k+1
- end
- gui.text(30+k*48,16+j*8,enehp)
- --gui.text(enedispx,enedispy,enehp,0x00ffffff)
- j=j+1
- end
- --gui.box(enedispx,enedispy,enedispx+16,enedispy+16,0xff00ffff)
- end
- end
- --自機情報の表示
- gui.text(8,0,"X Speed:" .. myspeedx+myspeeddotx)
- gui.text(8,8,"Y Speed:" .. myspeedy+myspeeddoty)
- gui.text(110,0,"HP : " .. currentHP .. "/" .. MaxHP)
- gui.text(110,8,"MP : " .. currentMP .. "/" .. MaxMP)
- gui.text(110,16,"Heart: " .. currentHeart .. "/" .. MaxHeart)
- if (vba.lagged()==true) then
- gui.text(5,125,"Frames:" .. vba.framecount() .. ":*" .. vba.lagcount(),0xff0000ff)
- else
- gui.text(5,125,"Frames:" .. vba.framecount() .. ":" .. vba.lagcount())
- end
- else
- --ムービーファイルが読み込まれていないとき
- gui.fillbox(0,0,500,500,0x00000088)
- gui.text(50,50,"Movie is NOT ACTIVE!!")
- end
- vba.frameadvance()
- end
- --[[
- 今後の予定
- ・一個の攻撃に対して敵機の無敵時間があるか、あればどこかの調査。
- ・撃破/攻撃可能かどうかの判定を行うものがあれば・・・。
- ・サブウェポンの攻撃判定表示できればいいなあ
- ]]--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement