{"saveReadBlocks":[{"callVaHex":"0x00423404","targetVaHex":"0x004576d8","saveOffsetHex":"0x0000","sizeHex":"0x0072","description":"first save block, includes scene selector bytes and tile/camera candidates"},{"callVaHex":"0x00423430","targetVaHex":"0x00457750","saveOffsetHex":"0x0072","sizeHex":"0x0288","description":"second save block"},{"callVaHex":"0x0042345c","targetVaHex":"0x0059db60","saveOffsetHex":"0x02fa","sizeHex":"0x0200","description":"third save block"}],"selectorFields":[{"saveOffsetHex":"0x0002","runtimeVaHex":"0x004576da","field":"scene selector group","loaderVaHex":"0x004234a3"},{"saveOffsetHex":"0x0003","runtimeVaHex":"0x004576db","field":"scene selector slot","loaderVaHex":"0x004234b1"},{"saveOffsetHex":"0x0004","runtimeVaHex":"0x004576dc","field":"tile/camera X candidate","loaderVaHex":"0x00424a93"},{"saveOffsetHex":"0x0006","runtimeVaHex":"0x004576de","field":"tile/camera Y candidate","loaderVaHex":"0x00424ab8"}],"selectorTrace":[{"vaHex":"0x004234a3","operation":"AL = byte [0x004576da]","meaning":"load save selector group from save offset 0x0002"},{"vaHex":"0x004234a8","operation":"EAX = dword [0x00442d35 + AL * 4]","meaning":"select row pointer from group table"},{"vaHex":"0x004234b1","operation":"CL = byte [0x004576db]","meaning":"load save selector slot from save offset 0x0003"},{"vaHex":"0x004234b7","operation":"EAX = dword [EAX + ECX * 4]","meaning":"select scene/progress pointer from row and slot"},{"vaHex":"0x004234ba","operation":"dword [0x0059de30] = EAX","meaning":"store selected scene/progress pointer for later runtime use"}],"selectedPointerRuntimeUses":[{"vaHex":"0x0040ad9b","handlerTableVaHex":"0x0044073c","handlerIndex":7,"kind":"selectIndexedPointer","operation":"stream byte + table pointer -> dword [0x0059de30]","meaning":"runtime script opcode selects an indexed pointer into the same selected-pointer global","evidenceVaHex":"0x0040adb8"},{"vaHex":"0x0040adc9","handlerTableVaHex":"0x00440740","handlerIndex":8,"kind":"jumpToSelectedPointer","operation":"if dword [0x0059de30] != 0, save current stream and set context+0x40 = dword [0x0059de30]","meaning":"selected pointer becomes the active script/event stream pointer","evidenceVaHex":"0x0040adfe"},{"vaHex":"0x0040ae0e","handlerTableVaHex":"0x00440744","handlerIndex":9,"kind":"setSelectedPointer","operation":"mode 0 stores current stream pointer; mode 1 stores dword [stream+4] into 0x0059de30","meaning":"runtime script opcodes update the selected pointer global","evidenceVaHex":"0x0040ae37"}],"scriptHandlerTable":{"startVaHex":"0x00440720","selectedPointerHandlers":[{"index":7,"entryVaHex":"0x0044073c","handlerVaHex":"0x0040ad9b","kind":"selectIndexedPointer"},{"index":8,"entryVaHex":"0x00440740","handlerVaHex":"0x0040adc9","kind":"jumpToSelectedPointer"},{"index":9,"entryVaHex":"0x00440744","handlerVaHex":"0x0040ae0e","kind":"setSelectedPointer"}]},"selectorInstructionBytes":[{"vaHex":"0x004234a1","bytes":"33 c0"},{"vaHex":"0x004234a3","bytes":"a0 da 76 45 00"},{"vaHex":"0x004234a8","bytes":"8b 04 85 35 2d 44 00"},{"vaHex":"0x004234af","bytes":"33 c9"},{"vaHex":"0x004234b1","bytes":"8a 0d db 76 45 00"},{"vaHex":"0x004234b7","bytes":"8b 04 88"},{"vaHex":"0x004234ba","bytes":"a3 30 de 59 00"},{"vaHex":"0x0040adb8","bytes":"a3 30 de 59 00"},{"vaHex":"0x0040adfe","bytes":"a1 30 de 59 00"},{"vaHex":"0x0040ae06","bytes":"89 41 40"},{"vaHex":"0x0040ae37","bytes":"a3 30 de 59 00"},{"vaHex":"0x0040ae4a","bytes":"a3 30 de 59 00"}],"frontierExample":{"group":2,"slot":0,"groupTableVaHex":"0x00442d35","rowPointerVaHex":"0x0053f328","selectedPointerHex":"0x00540714","secondLevelPointerHex":"0x005429dc","leafPointerHex":"0x00542ac0","knownFrontier":"map1_01a -> map2_02d via leaf 0x00542ac0"}}