05 further investigations - HoraceAndTheSpider/New-Zealand-Story-Editor GitHub Wiki
Further Investigations — single authoritative queue
v0.12 — Transport investigation: resolved source identity, attachment still open
- Verified: native animation image words are one-based. Script
$005Eresolves to bitmap$05D(bird);$005Dinstead resolves to bitmap$05C. Earlier type$21bird attribution was incorrect. Native type$26(decimal 38) animation source Disk$8AF90→ RAM$0B006has a verified 64-byte decompression match. Type$11draws purple rider-like bitmap$03Ffrom script$0040. Native$11has four fixed placements, and stock generator variant$01(53 placements) requests type$11. - Not proved: whether retail code links
$11and$26, whether the bird is summoned as a separate actor, its animation/host relationship, the correct layer order and offsets, and runtime movement of the rider. Default review composite should be treated as hypothesis, not a faithful in-game reconstruction. - Next trace: follow native type
$11behaviour RAM$07006and type$26handler RAM$063DAthrough the factory RAM$05872, recording any child allocations and actor-pointer writes. Then validate on Amiga before baking a fixed carrier attachment into placement semantics. Consider other true carrier families only where the code supplies their actor/animation links. - Generator follow-up: decode actual
$FC/$FD/$FE/$FFcontrol flow and$FEcountdown units; the browser's on-map generated-enemy sequence remains a lexical candidate preview, not a retail scheduler. - Still open: enemy spawn position/state/facing, boss boundary object
$25, firing objects at map start, 1-1 header 14 rows versus observed display 17, all special warp paths and actual sprite hotspot alignment. These are not waived by the transport preview.
v0.11 research status and next native-code targets
- Resolved: source of the conspicuous generator
$A1hold: v0.10's preview timer, not an original delay command. Native$8048at RAM$0B62Eclears+$20/+$1Eand advances+$22. Illustration now holds the visually open bitmap$A0, pending genuine timing proof. - Read-only tool delivered: generators can preview their source-listed child actor types on-map as a looping request sequence, or hold the inspector-selected request. These are lexical source tokens with representative graphics, not actual emitted actor instances. Confirm the
$FC/$FD/$FE/$FFbranch and delay consumers, actor allocation, emission rate, pose and direction by tracing the running 68000 scheduler and comparing on Amiga. - Still unresolved: enemy initial state/facing; exact generator child placement and timing; projectile start placement; five boss arena-closure triggers (user-referenced
$25); header-active map size vs camera viewport; rider/transport compositing; source-driven collectible parameter effects; true sprite hotspots; special-stage transitions. Do not mark these closed based on an attractive preview.
Current priorities after P19 (14 October 2026)
The one-based native image conversion is proven and corrected. The actual type $03 generator is now drawn independently of its candidate child. These are not substitutes for the original gameplay investigations, which remain listed here as explicit requirements:
- Actor initialization/state and facing. Trace the actor factory and each type's post-construction initializer, identifying the starting value and consumers of byte
+$10and other orientation/animation fields. Does any type default to right? What activates standing, walking, firing and death branches? Compare original savestate and actual gameplay before assigning directions on maps. - Generator state machine. Execute/trace
$FC,$FD,$FE,$FFand$8048handlers to determine child request order, delays, activation zones, concurrency and reactivation. The editor currently animates known door frames and offers optional candidate child previews; it does not run native spawns. - Directly placed projectiles. The existence of a frame and a dynamic secondary-object animation does not prove that a bullet's actor can be created at level start through a stock four-byte placement. Trace actor factory type availability and required parent/handler context; only enable writing after Amiga tests and source-safe object-list repacking.
- Boss/enclosure triggers. Distinguish actor type
$25, bitmap index$025and other trigger fields, and trace the dynamic condition for locking/unlocking boss areas. Five source type$02placements occur in the five end stages; source direct placements of type$25are zero. That does not exclude runtime creation or hidden map triggers. - Map size vs display area. Original 1-1 native header is 64×14 active within 64×64 stored cells. User reports 64×17 visible rows. Trace camera scroll, overscan and backdrop render clipping before altering active bounds.
- Transport composite. Distinguish bitmap
$3F/$40rider and bitmap$5Dtransport and prove simultaneous drawing, anchor and cycling. Raw script word$5Dresolves to bitmap$5C, so earlier apparent$5Dreferences cannot by themselves prove transport selection. - All warp systems. The 12 ordinary links are navigable in both directions; trace special boss/rescue transport, exact arrival point projection, and native warp update logic separately.
- Per-object art and alignment. Resolve item
$1Fplacement parameter→lookup slot, letter$20type and awards, precise sprite hot-spot and screen-origin projection. P19 allows a provisional sprite-only +4px horizontal adjustment, no coordinate writes; compare against original in-game screenshots. - Reachability of collectible bitmap
$BD. The original lookup script contains$BEat slot16, which draws bitmap$BDbecause renderer subtracts 1. Establish whether any valid runtime path selects that slot. Low priority relative to accurate graphics and gameplay.
Neither a preview animation nor an owner observation is proof of a gameplay routine. Every future completed item should be linked to native source bytes, a consumer trace, visual match, and where relevant WHDLoad test.

Priorities after P18 (14 October 2026)
- Runtime actor pose, initial direction and behaviour: trace factory fields
+$10,+$20,+$30, animation index and original$8040/$8044command consumers in the actor update/render code. Establish whether first active pose is idle, walking or firing and when it points left or right; validate against owner gameplay recordings. Tiki$000is visually identified as standing, but the first source-script segment starts$001. - Generator execution chains: P18 can decode all 19 descriptor request lists, including variant
$06:$04,$04,$05,$06, and draw exact native X/Y threshold rectangles. Trace$FC/$FD/$FE/$FF, source reset pointers, five child actor slots, script arguments and event lifetimes to prove the actual spawn order, timing, chaining, reuse and off-screen activation. - Composite flying entities:
$3F/$40are visually identified as rider artwork,$5Das a bird/transport, and source scripts for$21,$22,$23,$25,$27each reference$5D. Trace parent/child object links, rendering order and offset (especially 1-2 type$21at(37,23)); do not force unproven composites into default map previews. - Bosses and closed-off regions: identify boss graphics, dynamic spawn triggers, scrolling/camera locks and the owner's candidate
$25marker. No original four-byte type$25placements exist; decide whether$25describes image, child actor or other control field. Validate special 4-4→4-4b path separately from normal warp table. - Warp lifecycle and all transitions: P18 links the 12 configured ordinary out/in rows in both directions. Trace native destination coordinate units, arrival alignment, and every separate world/boss/rescue transition. Add links for other systems only once their source is independently verified.
- Map active bounds vs rendering: original 1-1 header is 64×14 whereas the owner estimates 64×17 visible tiles; trace camera/window height, extra display rows, clipping and collision buffer creation. Do not change stored 64×64 or active header fields based on a screenshot estimate.
- Native actor writes: test whether projectile types or child actor effects can be deliberately instantiated at level start; requires factory consumption, script pointers, relocation of contiguous 599 placements and WHDLoad validation. Editor remains read-only for all entity/resource changes; arbitrary artwork preview is not a game-object writer.
- Item table links and sprite
$BD: lower priority; trace actual$1Fslot/parameter selection and effects if time permits.
Evidence notation: Code-verified (native bytes and interpreter), source-data only (sprite/script mention without executed flow), owner-observed (visual identification), provisional (editor illustration). A candidate preview must never be promoted to gameplay truth without a code trace or Amiga result.
This remains the one canonical open-investigation queue. Keep all evidence and illustrative figures in the seven existing Wiki pages and wiki/images/. research/ and visuals/ are temporary and can be removed after genuine migration; no extra logs or append pages.
Graphics — source command decoding achieved; runtime pose selection and export still open
Resolved in P12: the actual animation interpreter RAM $0B3F0 / Disk $8B358; frame index destination $12(A5) and command distinction; original image drawing routine RAM $0BF94 / Disk $8BEF4; native directory RAM $039AA6 of 289 valid 16-byte descriptors; RAM image pool $022AA6; 4-byte per-image width-in-words/height header and five plane-major bitmap bands (mask + four colour planes); signed X/Y hotspots; original 16-index preview palette. Reproduced 289 authentic loaded-stock sprite PNGs with verified dimensions, masks, visible Tiki, multiple enemy families, $1F fruit/items and $20 bonus letters. Three renderer/animation code windows byte-match the original disk, every image header checked. See Original Game Code and Object families, including embedded images.
Resolved for read-only disk-only sprite import (P13): original bitmap source at $A099A..$B42CE (94,208 decompressed bytes), 16-byte descriptor source at $B42CF, both $95 RLE. All 289 image sizes/offsets/hotspots now recovered from disk alone and rendered in the browser; no bundled art or map bytes. Still blocking sprite writes: trace native 68000 source loader/transform, compression encoder, record relocation, capacity and Amiga runtime tests; cannot call the graphics writable until the owner tests it in Amiga/WHDLoad. Earlier P04/P10 128-byte striped image probes are obsolete and should never be displayed as authentic art.
P14 verified (retained): the interpreter RAM $0B3F0 has 20 actual command handlers at the BRA.W jump table RAM $0B430 / Disk $8B398. Their operand lengths (0, 1 or 2 words) now support a bounded first-linear-segment decoder from Disk.1 without mistaking opcode parameters for sprite IDs. Type $05 first segment references only $079..$07D (not guessed $07E..$081); $1F first 17 image slots are non-sequential ($BD at slot 8, $B8 at slot 13). The Wiki 03/04 contains the exact table and source-linked PNGs. Source-to-savestate tests independently verify 64 decompressed bytes each for 39/46 actor animation pointers; the remaining seven ($08,$1B,$1C,$1D,$1E,$24,$26) have no proven source start. The P14 browser offers non-exportable per-placement review frames and a JSON observations export; no Disk.1 entity or sprite bytes are changed.
Resolved with original code in P15: the complete finite source-data envelopes for $04,$05,$06 have been identified ($48/$54/$6E bytes), revealing later non-linear image IDs without inventing continuous species groups. The owner identifies initial image IDs $6E,$78,$81, each one before the corresponding first straight-line native script frame. Original image $8D is not orphan art: RAM $08960 / Disk $888D8 installs pointer $0838E onto a secondary object, and that script contains $8C,$8D,$8E,$8F (original Disk $88306). It appears visually to be a dynamic arc/weapon effect; confirm the triggering event on Amiga rather than searching for a non-existent type-$8D collectible. The four direct type-$06 placements on 1-1 make that stage a suitable runtime observation target. See Game Code and Runtime and Game Objects and Entities.
P17 visual-groups correction: The owner confirms source-backed sprite IDs in the visual catalogue are mis-grouped in v0.7: Tiki initial $001, caged kiwi $D9 (end animation starts $DA), bonus-family visual group $C9..$CF, reviewed type $03 starting $A7 (native script retains $A6), type $05 action/death effects separate from locomotion, and ordinary warp frames $28/$29. Implemented as browser-only reviewed groups and outgoing warp preview. Do not change original script words to imitate artistic numbering. Validate warp display anchor/period with retail Amiga captures and original objective lifecycle/bonus parameter mapping before asserting exact gameplay states.
Still to validate in gameplay: the trigger/display of the $8D child sequence, control-flow branches, native frame selection per object instance; $1F parameter→item, $20 parameter→letter plus actual award/effect; generator $03 script→spawned actor/animation; palette changes or shared index variants; blitter source and signed hotspots vs the user's real on-screen captures. After rechecking v0.3, the owner thinks present entity markers already look correct. No assumed ±16 px correction to either coordinate is justified; previous X/Y controls remain diagnostic and do not mutate Disk.1.
Accepted editor P13–P14 subset: compact right-side original sprite browser decoding all 289 images from Disk.1 on load, native frame dimensions and index/pointers; optional default-on representative family art over map placements. Markers and warps remain read-only; original $28/$29 art is now shown at outgoing warp source anchors. First-segment source-linked groupings, inspect-to-select, per-instance pose review and review JSON exports are provided. Full exact runtime pose selection and source-encoded editor controls remain locked. Need owner browser validation of viewer layout, gallery images, correct visual placement, navigation and performance; user screenshot of any inaccurate instance can distinguish anchor/pose issues.
Other open work
| Priority | Issue | Next proof |
|---|---|---|
| P1 | Graphics re-encoding and 68000 loader execution | Source identified $A099A, directory $B42CF. Trace exact loader/transpose, patch and pointer capacity before any writes. |
| P1 | Dynamic animation branches, original hero/enemy/object overlays, and seven unresolved actor sources | 20-command handler table, bounded $04/$05/$06 streams, plus 19 generator first actor requests now confirmed. Next trace runtime choice of frame for each instance and moving child positions, and validate on-map hero/enemy/collectible images on original Amiga. Seven actor script sources still unresolved. $8D secondary-effect source use was established earlier but is not the owner's target (they meant $BD); it is not a current priority. |
| P2 | $1F placed collectibles and their actual game effects |
17 ordered image slots proven; correlate placement flags $00,$02,$03,$06,$40,$41,$46 with frame selection and effects in handler $0767A. Whether uncommon sprite $BD appears as a retail item is low priority. |
| P1 | $20 bonus letters |
Six parameter variants 0–5 versus six original native $CA..$CF script references, plus image $C9 now included in the reviewed bonus artwork; exact pickup effects, 1000-value call at $075D8 and $05452. |
| P1 | 298 generator $03 placements, 19 variants |
First $FC actor request now decoded for all 19 variants from original $85C07 descriptor stream. Next: follow later generator commands and movement/pose selection; confirm child visuals against live game. Keep 32 generator and five-child capacities separate. |
| P1 | Ordinary and non-table warps | Find remembered arrival in 1-3, paths excluded from 20×8 ordinary table. |
| P1 | Rescue to 4-4b | Trace trapped kiwi callback via mode flag $26(A6) set at $04632; special arrival. |
| P2 | Editable actors, sprites, graphics and transition repacking | Source-safe encoder/relocation, pointer and capacity audits; Amiga test. |
| P1 | Tile property code semantics | Full disk source $8CA5E..$8CFE3 and all 21 native word tables now byte-verified; editor exposes four 2×2 property bytes. Next: trace native collision/damage consumers and owner-verify which values correspond to pass-through, solid, spikes, destructible and special surfaces. |
| P2 | Level trailer | Meaning of per-level $580 data remains unknown. |
Locked baseline — do not re-investigate without counterevidence
- Original Disk.1: 901,120 bytes; SHA256
fec7ce66934497b65745aa658599bdc697cf0ea0111d77d211fce3f48e27b416. OriginalStage 1_1.usssavestate SHA2564656b4af4322ce946cd8cf0decf843ffb5a8cf7e80fbf153df5c0a2fe317cadb. - 21 stock map records; 64×64 tiles stored bottom-up, declared heights 14/32/48/64; correct 3-4
$46280, 5-3$79080; 16 verified original scenery banks. - 599 4-byte placement entries; 298 type
$03, 29$1F, 30$20; packed Disk$8CFE4..$8D992. Actor factory 46 descriptors RAM$058D2. - Transition table 20×8 at RAM
$04B02, 12 configured; compressed Disk$84B14..$84B7F, no in-place expansion; 4-4b is separate area. - 289 loaded original graphic records indexed 0..288 (frame
$120), directory$039AA6, data$022AA6; Disk source now mapped to$A099Aand$B42CF. - Only map-only unmodified-byte-preserving Disk.1 export is approved. All other original data stays immutable.