Advertisement
Robert_Ordis

Showing about coordinates of Castlevania HoD

Sep 11th, 2012
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.45 KB | None | 0 0
  1. --[[
  2. Castlevania Harmony of Dissonance
  3. 自機座標、
  4. 自機壁当たり判定、
  5. グリッド、
  6. 自機攻撃判定、
  7. 自機のスピード、
  8. 敵機の攻撃受領判定を表示します。
  9. Created by Robert_Ordis
  10. 2012/09/11(TUE)
  11. ]]--
  12.  
  13. while (true) do
  14.     if(movie.active()==true) then
  15.  
  16.  
  17.         --カメラのXとYを読み込んでグリッドを表示。
  18.         gridx=memory.readbyte(0x03072b2C)%16
  19.         gridy=memory.readbyte(0x03072B2E)%16
  20.         for line=0,255,16 do
  21.             gui.line(0,line-gridy,255,line-gridy,0x00FFFF55)
  22.             gui.line(line-gridx,0,line-gridx,255,0x00FFFF55)
  23.             gui.line(0,line-gridy+8,255,line-gridy+8,0x00FFFF33)
  24.             gui.line(line-gridx+8,0,line-gridx+8,255,0x00FFFF33)
  25.         end
  26.  
  27.         --自機の情報をいろいろと表示。
  28.         currentHP=memory.readword(0x0201854E)
  29.         MaxHP=memory.readword(0x02018786)
  30.  
  31.         currentMP=memory.readword(0x02018550)
  32.         MaxMP=memory.readword(0x02018788)
  33.  
  34.         currentHeart=memory.readword(0x02018794)
  35.         MaxHeart=memory.readword(0x0201878A)
  36.         RightLeft=memory.readbyte(0x02000478) --0x40以上がLeft
  37.  
  38.         --自機のスピード表示
  39.         myspeedx=memory.readwordsigned(0x0200046A)
  40.         myspeedy=memory.readwordsigned(0x0200046E)
  41.         myspeeddotx=(memory.readword(0x02000468))/65536
  42.         myspeeddoty=(memory.readword(0x0200046C))/65536
  43.  
  44.         --自機攻撃の当たり判定の元
  45.         mt1=memory.readbytesigned(0x03001A28)
  46.         mt2=memory.readbytesigned(0x03001A29)
  47.         mt3=memory.readbytesigned(0x03001A2A)
  48.         mt4=memory.readbytesigned(0x03001A2B)
  49.  
  50.        
  51.         --時期の壁当たり判定の元
  52.         MyJudgeLeftEdge=memory.readwordsigned(0x03001A20)
  53.         MyJudgeRightEdge=memory.readwordsigned(0x03001A24)
  54.         MyJudgeUpEdge=memory.readwordsigned(0x03001A22)
  55.         MyJudgeDownEdge=memory.readwordsigned(0x03001A26)
  56.  
  57.         --さっきの情報を総括して表示。
  58.         if( RightLeft>=64 ) then
  59.             --左向き
  60.             gui.box(MyJudgeRightEdge-1,MyJudgeUpEdge+3,MyJudgeLeftEdge+2,MyJudgeDownEdge,0xff00ffff)
  61.  
  62.  
  63.             hanteir=MyJudgeRightEdge-mt1-6-1
  64.             hanteiu=MyJudgeDownEdge+(mt2)+1
  65.             hanteil=hanteir-mt3+1
  66.             hanteid=hanteiu+(mt4)-1
  67.  
  68.             gui.box(hanteil,hanteiu,hanteir,hanteid,0x00ff00ff)
  69.  
  70.         else
  71.             --右向き
  72.             gui.box(MyJudgeLeftEdge+2,MyJudgeUpEdge+3,MyJudgeRightEdge-1,MyJudgeDownEdge,0xff00ffff)
  73.  
  74.             hanteil=MyJudgeLeftEdge+mt1+6
  75.             hanteiu=MyJudgeDownEdge+(mt2)+1
  76.             hanteir=hanteil+mt3-1
  77.             hanteid=hanteiu+(mt4)-1
  78.             gui.box(hanteil,hanteiu,hanteir,hanteid,0x00ff00ff)
  79.  
  80.         end
  81.            
  82.  
  83.  
  84.  
  85.         j=0
  86.         k=0
  87.  
  88.  
  89.    
  90.         --敵機などのオブジェクトの情報
  91.         for i=10,247,1 do
  92.             --+78→左右どっちを向いている?
  93.             eneNumber=memory.readbyte(0x02000028+(i*0x00000080))
  94.             if(eneNumber>0) then
  95.                 --敵機画面上座標表示
  96.                 enedispx=memory.readwordsigned(0x02000062+(i*0x00000080))
  97.                 enedispsubx=memory.readword(0x02000060+(i*0x00000080))/65536
  98.                 enedispsuby=memory.readword(0x02000060+4+(i*0x00000080))/65536
  99.                 enedispy=memory.readwordsigned(0x02000062+4+(i*0x00000080))
  100.                 enehp=memory.readwordsigned(0x02000054+(i*0x00000080))
  101.  
  102.                 --敵機攻撃受領判定の元。座標からどれだけずれてるか(eneJudgeStart)
  103.                 --eneJudgeStartからどれだけの範囲で判定があるか(eneJudgeRange)
  104.                 eneJudgeStartX=memory.readbytesigned(0x030019EC+i*00000008)
  105.                 eneJudgeStartY=memory.readbytesigned(0x030019ED+i*00000008)
  106.                 eneJudgeRangeX=memory.readbytesigned(0x030019EE+i*00000008)
  107.                 eneJudgeRangeY=memory.readbytesigned(0x030019EF+i*00000008)
  108.                 eneRightLeft=memory.readbyte(0x02000078+(i*0x00000080))            
  109.                 --攻撃受領判定の表示
  110.                 if(eneRightLeft<0x40) then
  111.                     eneJudgeX1=enedispx+eneJudgeStartX-1
  112.                     eneJudgeX2=eneJudgeX1+eneJudgeRangeX
  113.                     eneJudgeY1=enedispy+eneJudgeStartY
  114.                     eneJudgeY2=eneJudgeY1+eneJudgeRangeY
  115.                 else
  116.                     eneJudgeX1=enedispx-eneJudgeStartX
  117.                     eneJudgeX2=eneJudgeX1-eneJudgeRangeX
  118.                     eneJudgeY1=enedispy+eneJudgeStartY
  119.                     eneJudgeY2=eneJudgeY1+eneJudgeRangeY
  120.                 end
  121.                 --敵の攻撃受領判定を表示してみるテスト。
  122.                
  123.                
  124.                 gui.fillbox(eneJudgeX1,eneJudgeY1,eneJudgeX2,eneJudgeY2,0x00000088)
  125. --gui.text(enedispx,enedispy,"Address\n" .. string.format("0x%08x\n0x%08x\n%x",0x02000000+i*0x00000080,0x030019E8+i*0x00000008,i))
  126.                 --敵機HPの表示。ただしHP>0のものに限る
  127.                 if( enehp>0 ) then
  128.                    
  129.                     if( j>16 ) then
  130.                         k=k+1
  131.                     end    
  132.                     gui.text(30+k*48,16+j*8,enehp)
  133.                     --gui.text(enedispx,enedispy,enehp,0x00ffffff)
  134.                     j=j+1
  135.                 end
  136.  
  137.                 --gui.box(enedispx,enedispy,enedispx+16,enedispy+16,0xff00ffff)
  138.             end
  139.         end
  140.        
  141.        
  142.  
  143.         --自機情報の表示
  144.         gui.text(8,0,"X Speed:" .. myspeedx+myspeeddotx)
  145.         gui.text(8,8,"Y Speed:" .. myspeedy+myspeeddoty)
  146.    
  147.         gui.text(110,0,"HP   : " .. currentHP .. "/" .. MaxHP)
  148.         gui.text(110,8,"MP   : " .. currentMP .. "/" .. MaxMP)
  149.         gui.text(110,16,"Heart: " .. currentHeart .. "/" .. MaxHeart)
  150.  
  151.  
  152.         if (vba.lagged()==true) then
  153.             gui.text(5,125,"Frames:" .. vba.framecount() .. ":*" .. vba.lagcount(),0xff0000ff)
  154.         else
  155.             gui.text(5,125,"Frames:" .. vba.framecount() .. ":" .. vba.lagcount())
  156.         end
  157.     else
  158.         --ムービーファイルが読み込まれていないとき
  159.         gui.fillbox(0,0,500,500,0x00000088)
  160.         gui.text(50,50,"Movie is NOT ACTIVE!!")
  161.     end
  162.     vba.frameadvance()
  163. end
  164.  
  165. --[[
  166. 今後の予定
  167. ・一個の攻撃に対して敵機の無敵時間があるか、あればどこかの調査。
  168. ・撃破/攻撃可能かどうかの判定を行うものがあれば・・・。
  169. ・サブウェポンの攻撃判定表示できればいいなあ
  170. ]]--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement