Advertisement
Kirkq

Quest 64 US BizHawk Lua

Jan 29th, 2017
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 14.59 KB | None | 0 0
  1. function round(num, numDecimalPlaces)
  2.   local mult = 10^(numDecimalPlaces or 0)
  3.   return math.floor(num * mult + 0.5) / mult
  4. end
  5.  
  6. function printMemoryDomains(x,y)
  7.     local list = {}
  8.     list = memory.getmemorydomainlist()
  9.     local curr = memory.getcurrentmemorydomain()
  10.     local num = table.getn(list)
  11.     local i
  12.     gui.text(x,y,"Current: " .. curr)
  13.     for i=0,num do
  14.     gui.text(x,y + 15*(i+1),list[i])
  15.     end
  16. end
  17.  
  18. function printLocation(x,y)
  19.     --0x7BABC related to movement startup
  20.     XSpeed = memory.readfloat(0x7BAE4, true, "RDRAM")
  21.     YSpeed = memory.readfloat(0x7BAEC, true, "RDRAM")
  22.     Speed = math.sqrt(XSpeed * XSpeed + YSpeed * YSpeed)
  23.     gui.text(x,y + 0,"X: " .. round(memory.readfloat(0x7BACC, true, "RDRAM"),4))
  24.     gui.text(x,y+15,"Y: " .. round(memory.readfloat(0x7BAD4, true, "RDRAM"),4))
  25.     gui.text(x,y+30,"XSpeed: " .. round(XSpeed,4))
  26.     gui.text(x,y+45,"YSpeed: " .. round(YSpeed,4))
  27.     gui.text(x,y+60,"Speed: " .. round(Speed,4))
  28. end
  29. --84EE6 and 84EEE strongly related to "area/zone or maybe music"
  30. --memory.write_u16_be(0x084EE6, 2, "RDRAM")
  31. --memory.write_u16_be(0x084EEE, 2, "RDRAM")
  32. --memory.write_u16_be(0x08536A, 2, "RDRAM")
  33.  
  34. function printItems(x,y)
  35.     for i=1,30 do
  36.     Item = memory.readbyte(0x8CF78 + (i -1), "RDRAM")
  37.     if Item ~= 255 then
  38.         gui.text(x,y + 15*(i-1), "Item:" .. globalItemList[Item+1])
  39.     end
  40.     end
  41. end
  42.  
  43. function printAgility (x,y)
  44.     --gui.text(x,y + 15*0,"Agi(?): " .. round(memory.readfloat(0x7BC14, true, "RDRAM"),4))
  45.     --gui.text(x+200,y + 15*0,"/800")
  46.     gui.text(x,y + 15*1,"AgiField: " .. round(memory.readfloat(0x7BC18, true, "RDRAM"),4))
  47.     gui.text(x+200,y + 15*1,"/1000")
  48.     gui.text(x,y+15*2,"AgiTown:  " .. round(memory.readfloat(0x7BC1C, true, "RDRAM"),4))
  49.     gui.text(x+200,y + 15*2,"/2000")
  50.     gui.text(x,y+15*3,"AgiBattle:" .. round(memory.readfloat(0x7BCA0, true, "RDRAM"),4))
  51.     gui.text(x+200,y + 15*3,"/50")
  52.     gui.text(x,y+15*4,"MPRecharge: " .. round(memory.readfloat(0x7BC0C, true, "RDRAM"),4))
  53.     gui.text(x+200,y + 15*4,"/35")
  54.    
  55.     --gui.text(x,y+15*3,"Camera: " .. round(memory.readfloat(0x85D3C, true, "RDRAM"),4))
  56.     --gui.text(x,y+15*4,"Camera: " .. round(memory.readfloat(0x85DAC, true, "RDRAM"),4))
  57.     --gui.text(x,y+15*5,"Camera: " .. round(memory.readfloat(0x85DE4, true, "RDRAM"),4))
  58.     --gui.text(x,y+15*6,"Camera: " .. round(memory.readfloat(0x85E54, true, "RDRAM"),4))
  59.     gui.text(x,y+15*7,"BattleLastX: " .. round(memory.readfloat(0x86B18, true, "RDRAM"),4))
  60.     --gui.text(x,y+15*8,"BattleLastZ: " .. round(memory.readfloat(0x86B1C, true, "RDRAM"),4))
  61.     gui.text(x,y+15*8,"BattleLastY: " .. round(memory.readfloat(0x86B20, true, "RDRAM"),4))
  62.     gui.text(x,y+15*9,"CameraCenteredHereX: " .. round(memory.readfloat(0x86DD8, true, "RDRAM"),4))
  63.     --gui.text(x,y+15*9,"CameraCenteredHereZ: " .. round(memory.readfloat(0x86DDC, true, "RDRAM"),4))
  64.     gui.text(x,y+15*10,"CameraCenteredHereY: " .. round(memory.readfloat(0x86DE0, true, "RDRAM"),4))
  65.     --gui.text(x,y+15*9,"ArenaX: " .. round(memory.readfloat(0x88188, true, "RDRAM"),4))
  66.     --gui.text(x,y+15*10,"ArenaX: " .. round(memory.readfloat(0x881B8, true, "RDRAM"),4))
  67.     --gui.text(x,y+15*11,"ArenaX: " .. round(memory.readfloat(0x8C5A4, true, "RDRAM"),4))
  68. end
  69.  
  70. function printEncounterCounter(x,y)
  71.     gui.text(x,y,"EncCount: " .. memory.read_u16_be(0x8C578, "RDRAM"))
  72.     gui.text(x+190,y,"/2000")
  73.     gui.text(x,y + 15,"Increment: " .. round(memory.readfloat(0x8C574, true, "RDRAM"),4))
  74. end
  75.  
  76. function freezeEncounterCounter()
  77.     memory.write_u16_be(0x8C578, 0, "RDRAM")
  78.     memory.writefloat(0x8C574, 0, true, "RDRAM")
  79. end
  80.  
  81. function highEncounterCounter()
  82.    memory.write_u16_be(0x8C578, 1800,"RDRAM")
  83. end
  84.  
  85. function printEnemyStats(x,y)
  86.   EnemiesLeft = memory.readbyte(0x07C993, "RDRAM")
  87.   TimeUntilYouAct = memory.read_u16_be(0x07C99A, "RDRAM")
  88.  
  89.   gui.text(x,y,"ToAct:" .. TimeUntilYouAct)
  90.  
  91.   NumEnemies = EnemiesLeft -- For Now, Not Ideal
  92.   if NumEnemies > 0 then
  93.   for i=1,NumEnemies do
  94.      Base = 0x07C99C  --next = 0x07CAC4
  95.      WalkDec1 = memory.read_u16_be(0x07C99C + 296*(i-1), "RDRAM")
  96.      RelatedToAttacking = memory.read_u16_be(0x07C99E + 296*(i-1), "RDRAM")
  97.      RelatedToAttacking2 = memory.read_u16_be(0x07C9A0 + 296*(i-1), "RDRAM")
  98.      FloatSomething = memory.readfloat(0x7C9A8 + 296*(i-1), true, "RDRAM")
  99.      CurrHP = memory.read_u16_be(0x07C9A2 + 296*(i-1), "RDRAM")   --9A2 and ACA and BF2  --7C993 = dead?  3 = alive, 2 = dead? (296 = 0x128)
  100.      MaxHP = memory.read_u16_be(0x07C9A4 + 296*(i-1), "RDRAM")
  101.      X = memory.readfloat(0x7C9BC + 296*(i-1), true, "RDRAM")
  102.      Z = memory.readfloat(0x7C9C0 + 296*(i-1), true, "RDRAM")
  103.      Y = memory.readfloat(0x7C9C4 + 296*(i-1), true, "RDRAM")
  104.      
  105.      RapidlyChanging1 = memory.read_u16_be(0x07C9C6 + 296*(i-1), "RDRAM")
  106.      RapidlyChanging2 = memory.read_u16_be(0x07C9D4 + 296*(i-1), "RDRAM")
  107.      RapidlyChanging3 = memory.read_u16_be(0x07C9D6 + 296*(i-1), "RDRAM")
  108.      RapidlyChanging4 = memory.read_u16_be(0x07C9DC + 296*(i-1), "RDRAM")
  109.      RapidlyChanging5 = memory.read_u16_be(0x07C9DE + 296*(i-1), "RDRAM")
  110.      
  111.      Float1 = memory.readfloat(0x7C9E0 + 296*(i-1), true, "RDRAM")
  112.      Float2 = memory.readfloat(0x7C9E4 + 296*(i-1), true, "RDRAM")
  113.      Float3 = memory.readfloat(0x7C9E8 + 296*(i-1), true, "RDRAM")
  114.      Float4 = memory.readfloat(0x7C9EC + 296*(i-1), true, "RDRAM")
  115.      Float5 = memory.readfloat(0x7C9F0 + 296*(i-1), true, "RDRAM")
  116.      
  117.      ID = memory.readbyte(0x07CA0D + 296*(i-1), "RDRAM") --A0D
  118.      
  119.      RapidlyChanging6 = memory.read_u16_be(0x07CA10 + 296*(i-1), "RDRAM")
  120.      RapidlyChanging7 = memory.read_u16_be(0x07CA12 + 296*(i-1), "RDRAM")
  121.      RelatedToAttacking3 = memory.readbyte(0x07CA19+ 296*(i-1), "RDRAM")
  122.      Dunno1 = memory.readbyte(0x07CA1B+ 296*(i-1), "RDRAM")
  123.      Atk = memory.read_u16_be(0x07CAAC + 296*(i-1), "RDRAM")
  124.      Agi = memory.read_u16_be(0x07CAAE + 296*(i-1), "RDRAM")
  125.      Def= memory.read_u16_be(0x07CAB0 + 296*(i-1), "RDRAM")
  126.      --Exp does not appear to be here.  Total Exp for battle maybe?
  127.      
  128.      gui.text(x+100*(i-1),y+15,"HP:" .. CurrHP .. "/" .. MaxHP)
  129.      gui.text(x+100*(i-1),y+30,"At:" .. Atk)
  130.      gui.text(x+100*(i-1),y+45,"De:" .. Def)
  131.      gui.text(x+100*(i-1),y+60,"Ag:" .. Agi)
  132.      gui.text(x+100*(i-1),y+75,"ID:" .. ID)
  133.      gui.text(x+100*(i-1),y+90,"WalkDec:" .. WalkDec1)
  134.      gui.text(x+100*(i-1),y+105,"2:" .. Dunno1)
  135.      --gui.text(x+100*(i-1),y+120,"3:" .. Dunno3)
  136.   end
  137.   end
  138. end
  139.  
  140.  
  141. --Solvaring
  142. --Zelse
  143. --Nepty
  144. --Shilf
  145. --Fargo
  146. --Guilty
  147. --Beigis Stats in ROM at D87944
  148. --Mammon in ROM at D8797C --Offset is 0x38
  149. --*
  150. --*
  151. --6 areas and bosses
  152. --
  153. --0x112664 07D0BF 07D0AF 07D0AE 07D0AD 07D0AA 07D0A9
  154. --1 96 68 9 39 8 39
  155. --0 116 112 90 41 89 41
  156. --255 136 184 144 38 144 38
  157. --0 156 164 32 40 31 40
  158. --0 176 192 140 39 140 39
  159.  
  160. --39 39 39 39 39 8 144 39 9 68 96 65 141
  161. --41 41 41 41 41 89 144 41 90 112 116 129 147
  162.  
  163. --Were Hare ADC094 80, 140, 0.07
  164. --Hell Hound 130, 170, 0.084
  165. --Man Eater 115, 135, 0.084
  166. --Big Mouth ADC13C 130, 70, 0.105
  167. --Parassault 90, 150, 0.077
  168. --Orc Jr 90, 150, 0.077
  169. --Gremlin 90, 140, 0.084
  170. --Skeleton 90, 135, 0.084
  171. --Ghost Hound 90, 238, 0.084
  172. --Merrow 130, 170, 0.084
  173. --Wolf Goat 80, 125, 0.084, 130, 170, 0.091
  174. --*
  175. --Goblin B6337C
  176. --Frog King
  177. --Apophis
  178. --Mad Doll
  179. --Death Hugger
  180. --Kobold
  181. --Man Trap
  182. --Bat
  183. --Frog Knight
  184. --Marionasty
  185. --Dark Goblin
  186. --Hot Lips
  187. --Ghost Stalker B6361C
  188. --Treant
  189. --Cockatrice
  190. --*
  191. --Multi-Optics BBDE9C
  192. --Mimic
  193. --Crawler
  194. --Scorpion
  195. --Scare Crow
  196. --Wyvern
  197. --Skelebat
  198. --Cryshell BBE024
  199. --Blood Jell
  200. --Caterpillar (9)  -- C7D935 is interesting, may be red herring
  201. --Fish Man
  202. --*
  203. --Sandman (ID 0) C317EC
  204. --Werecat
  205. --Nightmare
  206. --Blue Man
  207. --Winged Sunfish
  208. --Gloon Wing
  209. --Ogre (ID 6)  
  210. --Rocky (ID 7)
  211. --Red Wyvern
  212. --FlamedMane
  213. --Magma Fish
  214. --RedRose (ID 11)
  215. --WhiteRoseKnight: C31A8C
  216. --*
  217. --Orc C9BE54
  218. --Ghost C9BE8C
  219. --Will o Wisp
  220. --Sprite
  221. --JackoLantern
  222. --Arachnoid
  223. --Lamia
  224. --Temptress
  225. --Pixie
  226. --Grangach
  227. --Thunder Jell
  228. --Termant
  229. --*
  230. --Judgment HP: CC443C
  231. --Pin Head HP: CC44AC
  232. --Pale Rider: CC4474
  233. --Spriggan: CC44E4
  234.  
  235. --RNG ROM
  236. --023BE2 =16838 and 023BE6 = 20077
  237. --41C64E6Dh + 3039h
  238. --12345 or 13345  ??
  239. --023BE4
  240.  
  241. --RNG RAM
  242. --022FE0
  243. --memory.write_u16_be(0x22FE2, 0, "RDRAM")
  244. --memory.write_u16_be(0x22FE4, 300, "RDRAM")
  245. --memory.write_u16_be(0x22FE6, 0, "RDRAM")
  246.  
  247. --Avalanche Y starts at 0x86F2C
  248.  
  249. function printStats(x,y)
  250.     local Exp = memory.read_u32_be(0x07BA90, "RDRAM")
  251.     local HPLv = memory.readbyte(0x07BAB0, "RDRAM")
  252.     local MPLv = memory.readbyte(0x07BAB1, "RDRAM")
  253.     local AgiLv = memory.readbyte(0x07BAB2, "RDRAM")
  254.     local DefLv = memory.readbyte(0x07BAB3, "RDRAM")
  255.     local Lv = memory.readbyte(0x07BAB4, "RDRAM")
  256.     local CurrHP = memory.read_u16_be(0x7BA84, "RDRAM")
  257.     local MaxHP = memory.read_u16_be(0x7BA86, "RDRAM")
  258.     local HPSub = memory.readbyte(0x7BAA9, "RDRAM")
  259.     local CurrMP = memory.read_u16_be(0x7BA88, "RDRAM")
  260.     local MaxMP = memory.read_u16_be(0x7BA8A, "RDRAM")
  261.     local MPSub = memory.readbyte(0x7BAAB, "RDRAM")
  262.     local Def = memory.readbyte(0x7BA8F, "RDRAM")
  263.     local DefSub = memory.readbyte(0x7BAAF, "RDRAM")
  264.     local Agi = memory.readbyte(0x7BA8D, "RDRAM")
  265.     local AgiSub = memory.readbyte(0x7BAAD, "RDRAM")
  266.     gui.text(x,y+0,"HP: " .. CurrHP .. "/" .. MaxHP .. " (" .. HPSub .. "/" .. globalStatTable[HPLv+1] ..")")
  267.     gui.text(x,y+15,"MP: " .. CurrMP .. "/" .. MaxMP .. " (" .. MPSub .. "/" .. 4*globalStatTable[MPLv+1] ..")")
  268.     gui.text(x,y+30,"Def: " .. Def .. " (" .. DefSub .. "/" .. 2*globalStatTable[DefLv+1] ..")")
  269.     gui.text(x,y+45,"Agi: " .. Agi .. " (" .. AgiSub .. "/" .. globalStatTable[AgiLv+1] ..")")
  270.     gui.text(x,y+60,"Lv: " .. Lv .. " (" .. Exp .. "/" .. globalLvTable[Lv+1] .. ")")
  271. end
  272.  
  273. function HP50()
  274. memory.write_u16_be(0x7BA84, 50, "RDRAM")
  275. end
  276. function setSpirits(f,e,wa,wi)
  277. memory.writebyte(0x7BAA4, f, "RDRAM")
  278. memory.writebyte(0x7BAA5, e, "RDRAM")
  279. memory.writebyte(0x7BAA6, wa, "RDRAM")
  280. memory.writebyte(0x7BAA7, wi, "RDRAM")
  281. end
  282. function setStats(HP,MP,De,Ag)
  283. memory.write_u16_be(0x7BA86, HP, "RDRAM")
  284. memory.write_u16_be(0x7BA8A, MP, "RDRAM")
  285. memory.writebyte(0x7BA8F, De, "RDRAM")
  286. memory.writebyte(0x7BA8D, Ag, "RDRAM")
  287. end
  288. function stackOfJewelsAndWings()
  289. --Earth Orb opens Connor Fortress door.
  290. --Wind Jade opens door to access Blue Cave.
  291. --Water Jewel reopens ship.
  292. memory.writebyte(0x8CF78, 20, "RDRAM")
  293. memory.writebyte(0x8CF79, 21, "RDRAM")
  294. memory.writebyte(0x8CF7A, 22, "RDRAM")
  295. memory.writebyte(0x8CF7B, 14, "RDRAM")
  296. memory.writebyte(0x8CF7C, 15, "RDRAM")
  297. memory.writebyte(0x8CF7D, 16, "RDRAM")
  298. memory.writebyte(0x8CF7E, 17, "RDRAM")
  299. memory.writebyte(0x8CF7F, 18, "RDRAM")
  300. memory.writebyte(0x8CF80, 19, "RDRAM")
  301. end
  302.  
  303. function setupLvTable(tmpTable)
  304.    --This table is calculated off the current level.
  305.    local i
  306.    for i=1,99 do
  307.    tmpTable[i] = memory.read_u32_be(0x05493C+4*(i-1),"ROM")
  308.    end
  309.    return tmpTable
  310. end
  311. function printLvTable(x,y,tmpTable)
  312.    local i
  313.    for i=1,99 do
  314.     gui.text(x,y+i*15,tmpTable[i])
  315.    end
  316. end
  317. function setupStatTable(tmpTable1)
  318.    --This table is calculated off the concept of numStatLevels, not current level.
  319.    local i
  320.    for i=1,70 do
  321.    tmpTable1[i] = memory.read_u16_be(0x054ACC+2*(i-1),"ROM")
  322.    end
  323.    return tmpTable1
  324. end
  325. function printStatTable(x,y,tmpTable1)
  326. --ROM 0x054909 is starting stats I think?
  327.    local i
  328.    for i=1,70 do
  329.     gui.text(x,y+i*15,tmpTable1[i])
  330.    end
  331. end
  332.  
  333. function printObjectCoordinates(x,y)
  334. --memory.writefloat(0x86F2C, 1600, true, "RDRAM")
  335. BrianX = memory.readfloat(0x7BACC, true, "RDRAM")
  336. BrianY = memory.readfloat(0x7BAD4, true, "RDRAM")
  337.  
  338. for i=1,10 do
  339. Timer = memory.read_u16_be(0x86F1C + 60*(i-1), "RDRAM")
  340. X = memory.readfloat(0x86F24 + 60*(i-1), true, "RDRAM")
  341. Z = memory.readfloat(0x86F28 + 60*(i-1), true, "RDRAM")
  342. Y = memory.readfloat(0x86F2C + 60*(i-1), true, "RDRAM")
  343. XDiff= (BrianX - X)
  344. YDiff= (BrianY - Y)
  345. D = math.sqrt(XDiff*XDiff + YDiff*YDiff)
  346. A = math.atan2(XDiff,YDiff)*(180/(math.pi))
  347.  
  348.  
  349. j=0
  350. if i > 5 then
  351. j=1
  352. end
  353.  
  354. if (Timer > 0) then
  355. gui.text(x+140*(i-j*5-1),y+0*15 + j*100,"Timer: " .. Timer)
  356. gui.text(x+140*(i-j*5-1),y+1*15 + j*100,"X: " .. round(X,3))
  357. gui.text(x+140*(i-j*5-1),y+2*15 + j*100,"Z: " .. round(Z,3))
  358. gui.text(x+140*(i-j*5-1),y+3*15 + j*100,"Y: " .. round(Y,3))
  359. gui.text(x+140*(i-j*5-1),y+4*15 + j*100,"D: " .. round(D,3))
  360. gui.text(x+140*(i-j*5-1),y+5*15 + j*100,"A: " .. round(A,3))  --16 angles
  361. end
  362. end
  363.  
  364.  
  365. --F1C Timer
  366. --F24 X
  367. --F28 Z
  368. --F2C Y
  369.  
  370. --F60 X
  371. --F64 Z
  372. --F68 Y
  373. end
  374.  
  375. globalItemList = {
  376. "0. Spirit Light",
  377. "1. Fresh Bread",
  378. "2. Honey Bread",
  379. "3. Healing Potion",
  380. "4  Dragon's Potion",
  381. "5. Dew Drop",
  382. "6. Mint Leaves",
  383. "7. Heroes Drink",
  384. "8. Silent Flute",
  385. "9.Celine's Bell",
  386. "10.Replica",
  387. "11.Giant's Shoes",
  388. "12.Silver Amulet",
  389. "13.Golden Amulet",
  390. "14.White Wings",
  391. "15.Yellow Wings",
  392. "16.Blue Wings",
  393. "17.Green Wings",
  394. "18.Red Wings",
  395. "19.Black Wings",
  396. "20.Earth Orb",
  397. "21.Wind Jade",
  398. "22.Water Jewel",
  399. "23.Fire Ruby",
  400. "24.Eletale Book",
  401. "25.Dark Gaol Key",
  402. }
  403.  
  404. -- Initializations
  405. local i
  406. globalLvTable = {}
  407. globalLvTable = setupLvTable(globalLvTable)
  408. globalStatTable = {}
  409. globalStatTable = setupStatTable(globalStatTable)
  410. memory.usememorydomain("RDRAM")
  411.  
  412. ----------------------------
  413. --Changes go down here.--
  414. ----------------------------
  415.  
  416. local tmp
  417. --for i=0x1,0xFFFF00 do
  418. --if memory.readbyte(i) == 9 then
  419. --if memory.readbyte(i+1) == 9 and memory.readbyte(i+2) == 9 and memory.readbyte(i+3) == 9 then
  420. --end
  421. --end
  422.  
  423. --memory.writebyte(0x07BAB4, 10, "RDRAM")
  424. --HP50()
  425. setSpirits(38,39,40,41)
  426. setStats(200,100,250,250)
  427. while true do
  428. --memory.write_u32_be(0x7508C, 0, "RDRAM")  -- did this do something?
  429. ---memory.write_u16_be(0x22FE2, 0, "RDRAM")
  430. --memory.write_u16_be(0x22FE4, 300, "RDRAM")
  431. ---memory.write_u16_be(0x22FE6, 0, "RDRAM")
  432. --4 same as 0
  433.  
  434. --RNG increment 0,N,1 rotates in a circle around you.
  435. --RNG increment 0,0,0 stays in one spot
  436.  
  437. --Thing1
  438. --memory.writefloat(0x86FA4, 1600, true, "RDRAM")
  439.  
  440.     stackOfJewelsAndWings()
  441.     HP50()
  442.     --highEncounterCounter()
  443.     --memory.writebyte(0x07CAB2,0,"RDRAM")
  444.     --memory.writebyte(0x07CAB5,0,"RDRAM")
  445.     --memory.writebyte(0x07CAB4,0,"RDRAM")
  446.     --memory.writebyte(0x07CAB3,0,"RDRAM")
  447.     --freezeEncounterCounter()
  448.     --printEnemyStats(50,10)
  449.     printEncounterCounter(100,500)
  450.     printStats(100,420)
  451.     --printLocation(100,150)
  452.     printAgility(100,230)
  453.     printItems(400,250)
  454.     printObjectCoordinates(50,10)
  455.     --printMemoryDomains(100,115)
  456.     --printLvTable(100,115,globalLvTable)
  457.     --printStatTable(100,115,globalStatTable)
  458.    
  459.    
  460.     emu.frameadvance()
  461. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement