ThomasSpeedrunner

Untitled

Sep 17th, 2013
450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1. ; ---------------------------------------------------------------------------
  2. ; "MAIN LEVEL LOAD BLOCK" (after Nemesis)
  3. ;
  4. ; This struct array tells the engine where to find all the art associated with
  5. ; a particular zone. Each zone gets three longwords, in which it stores three
  6. ; pointers (in the lower 24 bits) and three jump table indeces (in the upper eight
  7. ; bits). The assembled data looks something like this:
  8. ;
  9. ; aaBBBBBB
  10. ; ccDDDDDD
  11. ; eeFFFFFF
  12. ;
  13. ; aa = index for primary pattern load request list
  14. ; BBBBBB = pointer to level art
  15. ; cc = index for secondary pattern load request list
  16. ; DDDDDD = pointer to 16x16 block mappings
  17. ; ee = index for palette
  18. ; FFFFFF = pointer to 128x128 block mappings
  19. ;
  20. ; Nemesis refers to this as the "main level load block". However, that name implies
  21. ; that this is code (obviously, it isn't), or at least that it points to the level's
  22. ; collision, object and ring placement arrays (it only points to art...
  23. ; although the 128x128 mappings do affect the actual level layout and collision)
  24. ; ---------------------------------------------------------------------------
  25.  
  26. ; declare some global variables to be used by the levartptrs macro
  27. cur_zone_id := 0
  28. cur_zone_str := "0"
  29.  
  30. ; macro for declaring a "main level load block" (MLLB)
  31. levartptrs macro plc1,plc2,palette,art,map16x16,map128x128
  32. !org LevelArtPointers+zone_id_{cur_zone_str}*12
  33. dc.l (plc1<<24)|art
  34. dc.l (plc2<<24)|map16x16
  35. dc.l (palette<<24)|map128x128
  36. cur_zone_id := cur_zone_id+1
  37. cur_zone_str := "\{cur_zone_id}"
  38. endm
  39.  
  40. ; BEGIN SArt_Ptrs Art_Ptrs_Array[17]
  41. ; dword_42594: MainLoadBlocks: saArtPtrs:
  42. LevelArtPointers:
  43. levartptrs PLCID_Ehz1, PLCID_Ehz2, PalID_EHZ, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 0 ; WHZ ; WINTER HILL ZONE
  44. levartptrs PLCID_Ehz1, PLCID_Ehz2, PalID_EHZ2, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 1 ; LEV1 ; LEVEL 1 (UNUSED)
  45. levartptrs PLCID_Ehz1, PLCID_Ehz2, PalID_WZ, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 2 ; LEV2 ; LEVEL 2 (UNUSED)
  46. levartptrs PLCID_Unused1, PLCID_Unused2, PalID_EHZ3, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 3 ; LEV3 ; LEVEL 3 (UNUSED)
  47. levartptrs PLCID_Mtz1, PLCID_Mtz2, PalID_MTZ, ArtKos_MTZ, BM16_MTZ, BM128_MTZ ; 4 ; RRZ ; RUSTY RIOT ZONE ACTS 1 & 2
  48. levartptrs PLCID_Mtz1, PLCID_Mtz2, PalID_MTZ, ArtKos_MTZ, BM16_MTZ, BM128_MTZ ; 5 ; RRZ3 ; RUSTY RIOT ZONE ACT 3
  49. levartptrs PLCID_Wfz1, PLCID_Wfz2, PalID_WFZ, ArtKos_SCZ, BM16_WFZ, BM128_WFZ ; 6 ; AAZ ; ARCANE AIRSHIP ZONE
  50. levartptrs PLCID_Htz1, PLCID_Htz2, PalID_HTZ, ArtKos_MCZ2, BM16_MCZ, BM128_MCZ ; 7 ; MCZ ; MOUNTAIN CLIMB ZONE
  51. levartptrs PLCID_Hpz1, PLCID_Hpz2, PalID_HPZ, ArtKos_HPZ, BM16_HPZ, BM128_HPZ ; 8 ; HPZ ; HIDDEN PALACE ZONE
  52. levartptrs PLCID_Unused3, PLCID_Unused4, PalID_EHZ4, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 9 ; LEV9 ; LEVEL 9 (UNUSED)
  53. levartptrs PLCID_Ooz1, PLCID_Ooz2, PalID_OOZ, ArtKos_OOZ, BM16_OOZ, BM128_OOZ ; $A ; BSZ ; BLACK SEA ZONE
  54. levartptrs PLCID_Mcz1, PLCID_Mcz2, PalID_MCZ, ArtKos_CCZ, BM16_CCZ, BM128_CCZ ; $B ; CCZ ; CREEPY CAVERNS ZONE
  55. levartptrs PLCID_Cnz1, PLCID_Cnz2, PalID_CNZ, ArtKos_CNZ, BM16_CNZ, BM128_CNZ ; $C ; JWZ ; JACKPOT WAY ZONE
  56. levartptrs PLCID_Cpz1, PLCID_Cpz2, PalID_CPZ, ArtKos_CPZ, BM16_CPZ, BM128_CPZ ; $D ; CPZ ; CORROSION PLANT ZONE
  57. levartptrs PLCID_Dez1, PLCID_Dez2, PalID_DEZ, ArtKos_DEZ, BM16_DEZ, BM128_DEZ ; $E ; DEZ ; DEATH EGG ZONE
  58. levartptrs PLCID_Arz1, PLCID_Arz2, PalID_ARZ, ArtKos_WRZ, BM16_WRZ, BM128_ARZ ; $F ; WRZ ; WATERED RELIC ZONE
  59. levartptrs PLCID_Scz1, PLCID_Scz2, PalID_SCZ, ArtKos_SCZ, BM16_WFZ, BM128_WFZ ; $10 ; ACZ ; AERIAL CHASE ZONE
  60.  
  61. if (cur_zone_id<>no_of_zones)&&(MOMPASS=1)
  62. message "Warning: Table LevelArtPointers has \{cur_zone_id/1.0} entries, but it should have \{no_of_zones/1.0} entries"
  63. endif
  64. !org LevelArtPointers+cur_zone_id*12
  65.  
  66. ; ---------------------------------------------------------------------------
  67. ; END Art_Ptrs_Array[17]
Advertisement
Add Comment
Please, Sign In to add comment