Advertisement
Test_Runner

Scrolling Sky Disassembly Notes

Sep 12th, 2017
329
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Landing site BG tileset lookup
  2. org $88AD9C
  3.     DW B180, B980, C180, C980, D180,
  4.  
  5. ; west ocean   BG tileset lookup
  6. org $88ADA6
  7.     DW B180, B980, C180, C980, D980, E180
  8.  
  9. ; Main ASM Update Screen BG2 (dynamically loads the background)
  10. $88:AFB0 C2 30       REP #$30 ; 16bit
  11. $88:AFB2 AD 15 09    LDA $0915  [$7E:0915] ; Screen Y position
  12. $88:AFB5 85 B7       STA $B7    [$7E:00B7] ; $2110 BG 2 Vertical Scroll Offset
  13. $88:AFB7 AE 30 03    LDX $0330  [$7E:0330] ; D table index
  14.  
  15. $88:AFBA A9 40 00    LDA #$0040
  16. $88:AFBD 95 D0       STA $D0,x  [$7E:00D7] ; DMA0 size
  17. $88:AFBF 95 D7       STA $D7,x  [$7E:00DE] ; DMA1 size
  18. $88:AFC1 95 DE       STA $DE,x  [$7E:00E5] ; DMA2 size
  19. $88:AFC3 95 E5       STA $E5,x  [$7E:00EC] ; DMA3 size
  20.  
  21. ; Get Source for DMA0-1
  22. $88:AFC5 AD 15 09    LDA $0915  [$7E:0915] ;Screen Y
  23. $88:AFC8 29 F8 07    AND #$07F8 ; #$ 00000111 11111000
  24. $88:AFCB 38          SEC
  25. $88:AFCC E9 10 00    SBC #$0010 ; -10
  26. $88:AFCF 48          PHA        ; PHA
  27. $88:AFD0 29 00 FF    AND #$FF00
  28. $88:AFD3 EB          XBA
  29. $88:AFD4 0A          ASL A      ; LSR 7
  30. $88:AFD5 A8          TAY        ; Y = 0 - E (even)
  31. $88:AFD6 68          PLA        ; PLA
  32. $88:AFD7 29 FF 00    AND #$00FF ; #$ 00000000 11111000
  33. $88:AFDA 0A          ASL A
  34. $88:AFDB 0A          ASL A
  35. $88:AFDC 0A          ASL A      ; ASL 3
  36. $88:AFDD 18          CLC
  37. $88:AFDE 77 00       ADC [$00],y[$88:AF9A] ; ADD to ROM GFX table lookup
  38. $88:AFE0 95 D2       STA $D2,x  [$7E:00D9] ; DMA0 Source
  39. $88:AFE2 18          CLC
  40. $88:AFE3 69 40 00    ADC #$0040            ; Add 40 byte offset
  41. $88:AFE6 95 D9       STA $D9,x  [$7E:00E0] ; DMA1 Source
  42.  
  43. ; Get Source for DMA2-3
  44. $88:AFE8 AD 15 09    LDA $0915  [$7E:0915] ; Screen Y position
  45. $88:AFEB 29 F8 07    AND #$07F8 ; #$ 00000111 11111000
  46. $88:AFEE 18          CLC
  47. $88:AFEF 69 F0 00    ADC #$00F0 ; +F0
  48. $88:AFF2 48          PHA        ; PHA
  49. $88:AFF3 29 00 FF    AND #$FF00
  50. $88:AFF6 EB          XBA
  51. $88:AFF7 0A          ASL A      ; LSR 7
  52. $88:AFF8 A8          TAY        ; Y = 0 - E (even)
  53. $88:AFF9 68          PLA        ; PLA
  54. $88:AFFA 29 FF 00    AND #$00FF ; #$ 00000000 11111000
  55. $88:AFFD 0A          ASL A
  56. $88:AFFE 0A          ASL A
  57. $88:AFFF 0A          ASL A      ; ASL 3
  58. $88:B000 18          CLC
  59. $88:B001 77 00       ADC [$00],y[$88:AD9C] ; ADD to ROM GFX table lookup
  60. $88:B003 95 E0       STA $E0,x  [$7E:00E7] ; DMA2 Source
  61. $88:B005 18          CLC
  62. $88:B006 69 40 00    ADC #$0040            ; Add 40 byte offset
  63. $88:B009 95 E7       STA $E7,x  [$7E:00EE] ; DMA3 Source
  64.  
  65. $88:B00B E2 20       SEP #$20               ; 8bit
  66. $88:B00D A9 8A       LDA #$8A               ; ROM GFX bank (8A)
  67. $88:B00F 95 D4       STA $D4,x  [$7E:00DB]  ; DMA0 Source Bank
  68. $88:B011 95 DB       STA $DB,x  [$7E:00E2]  ; DMA1 Source Bank
  69. $88:B013 95 E2       STA $E2,x  [$7E:00E9]  ; DMA2 Source Bank
  70. $88:B015 95 E9       STA $E9,x  [$7E:00F0]  ; DMA3 Source Bank
  71.  
  72. $88:B017 C2 20       REP #$20               ; 16 bit
  73. $88:B019 A5 59       LDA $59    [$7E:0059]  ; $2108 BG 2 Address and Size (aaaaaabb)
  74. $88:B01B 29 FC 00    AND #$00FC             ; #$ 00000000 11111100
  75. $88:B01E EB          XBA                    ; ASL 8
  76. $88:B01F 85 12       STA $12    [$7E:0012]  ; STA 12
  77.  
  78. $88:B021 AD 15 09    LDA $0915  [$7E:0915]  ; Screen Y position
  79. $88:B024 38          SEC
  80. $88:B025 E9 10 00    SBC #$0010             ; -10
  81. $88:B028 29 F8 01    AND #$01F8             ; #$ 00000001 11111000
  82. $88:B02B 0A          ASL A
  83. $88:B02C 0A          ASL A                  ; ASL 2
  84. $88:B02D 18          CLC
  85. $88:B02E 65 12       ADC $12    [$7E:0012]  ; Add to BG2 Base Address
  86. $88:B030 95 D5       STA $D5,x  [$7E:00DC]  ; DMA0 Destination
  87. $88:B032 18          CLC
  88. $88:B033 69 20 00    ADC #$0020             ; Add 20
  89. $88:B036 95 DC       STA $DC,x  [$7E:00E3]  ; DMA1 Destination
  90.  
  91. $88:B038 AD 15 09    LDA $0915  [$7E:0915]  ; Screen Y position
  92. $88:B03B 18          CLC
  93. $88:B03C 69 F0 00    ADC #$00F0             ; +F0
  94. $88:B03F 29 F8 01    AND #$01F8             ; #$ 00000001 11111000
  95. $88:B042 0A          ASL A
  96. $88:B043 0A          ASL A                  ; ASL 2
  97. $88:B044 18          CLC
  98. $88:B045 65 12       ADC $12    [$7E:0012]  ; Add to BG2 Base Address
  99. $88:B047 95 E3       STA $E3,x  [$7E:00EA]  ; DMA2 Destination
  100. $88:B049 18          CLC
  101. $88:B04A 69 20 00    ADC #$0020             ; Add 20
  102. $88:B04D 95 EA       STA $EA,x  [$7E:00F1]  ; DMA3 Destination
  103.  
  104. $88:B04F 8A          TXA
  105. $88:B050 18          CLC
  106. $88:B051 69 1C 00    ADC #$001C
  107. $88:B054 8D 30 03    STA $0330  [$7E:0330]  ; Update D Table head
  108. $88:B057 6B          RTL
  109. }
  110.  
  111.  
  112.  
  113.  
  114. ;pre-Instruction HDMA code (Handles the scrolling effect)
  115. $88:ADC2 E2 30       SEP #$30               ; 8 bit
  116. $88:ADC4 A9 4A       LDA #$4A
  117. $88:ADC6 85 59       STA $59    [$7E:0059]  ; $2108 Screen address
  118. $88:ADC8 C2 30       REP #$30               ; 16 bit
  119. $88:ADCA A0 00 00    LDY #$0000
  120.  
  121. ; Setup HDMA scroll updates
  122. $88:ADCD B9 C7 AE    LDA $AEC7,y[$88:AEC7]  ; Load HDMA Address
  123. $88:ADD0 AA          TAX
  124. $88:ADD1 B9 C3 AE    LDA $AEC3,y[$88:AEC3]  ; Load Row Scroll Speed
  125. $88:ADD4 18          CLC
  126. $88:ADD5 7F 00 00 7E ADC $7E0000,x[$7E:9F80]; Add the scroll speed to scroll
  127. $88:ADD9 9F 00 00 7E STA $7E0000,x[$7E:9F80]; Save new scroll
  128. $88:ADDD B9 C5 AE    LDA $AEC5,y[$88:AEC5]  ; Always 0?
  129. $88:ADE0 7F 02 00 7E ADC $7E0002,x[$7E:9F82]; add 0?
  130. $88:ADE4 9F 02 00 7E STA $7E0002,x[$7E:9F82]; Do nothing?
  131. $88:ADE8 98          TYA
  132. $88:ADE9 18          CLC
  133. $88:ADEA 69 08 00    ADC #$0008             ; Increment Y to next line
  134. $88:ADED A8          TAY
  135. $88:ADEE C9 B8 00    CMP #$00B8            
  136. $88:ADF1 30 DA       BMI $DA    [$ADCD]     ; For each line
  137.  
  138. ; I can only assume this sets up the HDMA in some way
  139. $88:ADF3 A9 00 00    LDA #$0000
  140. $88:ADF6 8F D8 9F 7E STA $7E9FD8[$7E:9FD8]
  141. $88:ADFA 8F DA 9F 7E STA $7E9FDA[$7E:9FDA]
  142. $88:ADFE A9 1F 00    LDA #$001F
  143. $88:AE01 8F 00 9F 7E STA $7E9F00[$7E:9F00]
  144. $88:AE05 A9 9E 05    LDA #$059E
  145. $88:AE08 8F 01 9F 7E STA $7E9F01[$7E:9F01]
  146.  
  147. $88:AE0C AD 15 09    LDA $0915  [$7E:0915]  ; Screen Y position
  148. $88:AE0F 18          CLC
  149. $88:AE10 69 20 00    ADC #$0020
  150. $88:AE13 85 12       STA $12    [$7E:0012]  ; Screen Y + 20 (top viewable)
  151. $88:AE15 18          CLC
  152. $88:AE16 69 C0 00    ADC #$00C0
  153. $88:AE19 85 14       STA $14    [$7E:0014]  ; Screen Y + E0 (bottom viewable)
  154. $88:AE1B A0 00 00    LDY #$0000
  155. $88:AE1E A2 03 00    LDX #$0003
  156.  
  157. $88:AE21 A5 12       LDA $12    [$7E:0012]
  158. $88:AE23 D9 C1 AE    CMP $AEC1,y[$88:AEC1]
  159. $88:AE26 30 05       BMI $05    [$AE2D]     ; If screen y+20 > curr height
  160. $88:AE28 D9 C9 AE    CMP $AEC9,y[$88:AEC9]
  161. $88:AE2B 30 44       BMI $44    [$AE71]     ; and < next height go to cont
  162. $88:AE2D 98          TYA
  163. $88:AE2E 18          CLC
  164. $88:AE2F 69 08 00    ADC #$0008             ; Increment Y
  165. $88:AE32 A8          TAY
  166. $88:AE33 C9 B8 00    CMP #$00B8            
  167. $88:AE36 30 E9       BMI $E9    [$AE21]     ; While not end of lines...
  168.  
  169. ; screen is below the scroll lines (partial or completely)
  170. $88:AE38 A9 FF 05    LDA #$05FF
  171. $88:AE3B 38          SEC
  172. $88:AE3C E5 12       SBC $12    [$7E:0012]
  173.  
  174. $88:AE3E 85 18       STA $18    [$7E:0018]  ; height of visisble lines
  175. $88:AE40 C9 80 00    CMP #$0080
  176. $88:AE43 30 19       BMI $19    [$AE5E]     ; No more scrolling line visisble
  177. $88:AE45 A9 7F 00    LDA #$007F
  178. $88:AE48 9F 00 9F 7E STA $7E9F00,x[$7E:9F15]
  179. $88:AE4C A9 B5 00    LDA #$00B5
  180. $88:AE4F 9F 01 9F 7E STA $7E9F01,x[$7E:9F16]; HDMA stuff?
  181. $88:AE53 E8          INX
  182. $88:AE54 E8          INX
  183. $88:AE55 E8          INX
  184. $88:AE56 A5 18       LDA $18    [$7E:0018]
  185. $88:AE58 38          SEC
  186. $88:AE59 E9 7F 00    SBC #$007F            
  187. $88:AE5C 80 E0       BRA $E0    [$AE3E]     ; Scan again for next line
  188.  
  189. ; finished scanning for scrolling lines on a partial screen
  190. $88:AE5E 9F 00 9F 7E STA $7E9F00,x[$7E:9F1B];HDMA stuff?
  191. $88:AE62 A9 B5 00    LDA #$00B5
  192. $88:AE65 9F 01 9F 7E STA $7E9F01,x[$7E:9F1C]
  193. $88:AE69 A9 00 00    LDA #$0000
  194. $88:AE6C 9F 03 9F 7E STA $7E9F03,x[$7E:9F1E]
  195. $88:AE70 6B          RTL                    ;Finished
  196.  
  197. ; screen is is completely filled with scrolling lines
  198. $88:AE71 B9 C9 AE    LDA $AEC9,y[$88:AED1]  ; bottom of this scrolling line
  199. $88:AE74 38          SEC
  200. $88:AE75 E5 12       SBC $12    [$7E:0012]
  201. $88:AE77 85 18       STA $18    [$7E:0018]  ; height of visible lines
  202. $88:AE79 C9 80 00    CMP #$0080
  203. $88:AE7C 30 19       BMI $19    [$AE97]     ; No more scrolling line visible
  204. $88:AE7E A9 7F 00    LDA #$007F
  205. $88:AE81 9F 00 9F 7E STA $7E9F00,x[$7E:9F06]
  206. $88:AE85 B9 C7 AE    LDA $AEC7,y[$88:AED7]
  207. $88:AE88 1A          INC A
  208. $88:AE89 1A          INC A
  209. $88:AE8A 9F 01 9F 7E STA $7E9F01,x[$7E:9F07]; HDMA stuff
  210. $88:AE8E E8          INX
  211. $88:AE8F E8          INX
  212. $88:AE90 E8          INX
  213. $88:AE91 A5 18       LDA $18    [$7E:0018]
  214. $88:AE93 38          SEC
  215. $88:AE94 E9 7F 00    SBC #$007F             ; Scane again for next line
  216.  
  217. ; finished scanning for scrolling lines on a complete screen
  218. $88:AE97 9F 00 9F 7E STA $7E9F00,x[$7E:9F03]
  219. $88:AE9B B9 C7 AE    LDA $AEC7,y[$88:AECF]
  220. $88:AE9E 18          CLC
  221. $88:AE9F 69 02 00    ADC #$0002
  222. $88:AEA2 9F 01 9F 7E STA $7E9F01,x[$7E:9F04];HDMA stuff
  223. $88:AEA6 A5 18       LDA $18    [$7E:0018]
  224. $88:AEA8 18          CLC
  225. $88:AEA9 65 12       ADC $12    [$7E:0012]
  226. $88:AEAB 85 12       STA $12    [$7E:0012]  ; Update the bottom of the scanned screen
  227. $88:AEAD E8          INX
  228. $88:AEAE E8          INX
  229. $88:AEAF E8          INX
  230. $88:AEB0 A5 12       LDA $12    [$7E:0012]
  231. $88:AEB2 C5 14       CMP $14    [$7E:0014]  
  232. $88:AEB4 10 03       BPL $03    [$AEB9]     ; If not done scanning
  233. $88:AEB6 4C 21 AE    JMP $AE21  [$88:AE21]  ; go to partial cover scan
  234.  
  235. $88:AEB9 A9 00 00    LDA #$0000
  236. $88:AEBC 9F 03 9F 7E STA $7E9F03,x[$7E:9F15]; HDMA stuff
  237. $88:AEC0 6B          RTL                    ; Finish
  238. $88:AEC1      
  239.  
  240.       ;AEC1  ;AEC3  ;AEC5  ;AEC7      
  241.       ;Height ;Speed ;??? ;HDMA ADR      
  242.     DW $0000, $8000, $0000, $9F80,
  243.     DW $0010, $C000, $0000, $9F84,
  244.     DW $0038, $8000, $0000, $9F88,
  245.     DW $00D0, $C000, $0000, $9F8C,
  246.     DW $00E0, $8000, $0000, $9F90,
  247.     DW $0120, $C000, $0000, $9F94,
  248.     DW $01A0, $8000, $0000, $9F98,
  249.     DW $01D8, $C000, $0000, $9F9C,
  250.     DW $0238, $8000, $0000, $9FA0,
  251.     DW $0268, $C000, $0000, $9FA4,
  252.     DW $02A0, $8000, $0000, $9FA8,
  253.     DW $02E0, $C000, $0000, $9FA0,
  254.     DW $0300, $8000, $0000, $9FB0,
  255.     DW $0320, $C000, $0000, $9FB4,
  256.     DW $0350, $8000, $0000, $9FB8,
  257.     DW $0378, $C000, $0000, $9FBC,
  258.     DW $03C8, $8000, $0000, $9FC0,
  259.     DW $0440, $7000, $0000, $9FC4,
  260.     DW $0460, $C000, $0000, $9FC8,
  261.     DW $0480, $8000, $0000, $9FCC,
  262.     DW $0490, $0000, $0000, $9FD0, ; stationary line?
  263.     DW $04A8, $0000, $0000, $9FD4, ; stationary line?
  264.     DW $04B8, $0000, $0000, $9FD8, ; stationary line?
  265.     DW $0500 ;; extra line to use and hight of previous pand
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement