Advertisement
lui_

7-7 src

Apr 15th, 2019
1,018
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. norom
  2.  
  3. macro org(bank, offset)
  4.     org $10+((<offset>-$8000)%$2000)+($2000*<bank>)
  5.     base <offset>
  6. endmacro
  7.  
  8. !dropped_count_pos = $42
  9. !input_display_pos = $22
  10.  
  11. !ud_tile = $85
  12. !uD_tile = $86
  13. !Ud_tile = $87
  14. !UD_tile = $89
  15. !ab_tile = $80
  16. !aB_tile = $82
  17. !Ab_tile = $83
  18. !AB_tile = $84
  19. !l_tile = $8A
  20. !L_tile = $8B
  21. !r_tile = $8D
  22. !R_tile = $8E
  23.  
  24. current_input = $F7
  25.  
  26. counter_60hz = $11
  27. previous_60hz = $1F
  28.  
  29. dropped_frames = $0500
  30. real_frames_elapsed = $0501
  31. timer_frames = $0502
  32. timer_seconds = $0503
  33. timer_minutes = $0504
  34.  
  35. jump_fcount = $1F
  36. is_jumping_r = $0505
  37. jump_x_speed = $0506
  38. coords_1y = $0507
  39. jump_x_pos = $0508
  40. jump_x_sub = $0509
  41. disp_y_speed = $050A
  42. attempt_count = $050B
  43. frames_held = $050C
  44.  
  45.  
  46. sb_score = $7F4A
  47.  
  48. player_in_air = $D8
  49. player_x_pos = $90
  50. player_x_sub = $074D
  51. player_x_speed = $BD
  52. player_y_pos = $A2
  53. player_y_sub = $075F
  54. player_y_speed = $CF
  55.  
  56. ; $0300-$036B
  57. gfx_buffer_index = $0300
  58. gfx_buffer = $0301
  59.  
  60.  
  61.  
  62. ; increase 60Hz counter every frame from NMI
  63. %org(31, $F57E)
  64.         JSR nmi_hijack
  65.  
  66. %org(31, $E911)
  67. nmi_hijack:
  68.         INC counter_60hz
  69.         JMP $FC6F
  70.        
  71. ; dont get cards hmm
  72. ; %org(31, $FD44)
  73.         ; PHA
  74.  
  75. ; %org(30, $8DD8)
  76.         ; JSR $96E5
  77.        
  78.  
  79. %org(30, $9701)
  80.         JSR every_frame
  81.  
  82. %org(30, $9614)
  83. every_frame:
  84.         STA $1C
  85.         CLI
  86.        
  87.         LDA is_jumping_r
  88.         BNE .check_jump_end
  89.        
  90.         ; check jump start
  91.         LDA.b player_in_air
  92.         BNE .check_pipe_stuff
  93.         LDA.b player_x_speed
  94.         CMP #$08
  95.         BMI .nope
  96.         LDA.b current_input
  97.         BPL .nope
  98.         LDA.b player_y_pos
  99.         CMP #$80
  100.         BNE .nope
  101.        
  102.         ; detected jump to the right
  103.         INC is_jumping_r
  104.         LDA.b player_x_pos
  105.         STA jump_x_pos
  106.         LDA player_x_sub
  107.         STA jump_x_sub
  108.         LDA player_x_speed
  109.         STA jump_x_speed
  110.         LDA #$00
  111.         STA.b jump_fcount
  112.         RTS
  113.        
  114.        
  115.     .check_jump_end:
  116.         INC.b jump_fcount
  117.         LDA.b current_input
  118.         BMI .check_pipe_stuff
  119.        
  120.         ; done jumping
  121.         DEC is_jumping_r
  122.         LDA.b jump_fcount
  123.         STA frames_held
  124.  
  125.                
  126.     .check_pipe_stuff:
  127.         LDA.b player_x_speed
  128.         CMP #$38
  129.         BMI .nope
  130.         LDA.b player_y_speed
  131.         BMI .nope
  132.        
  133.         ; accept 5E-61 range
  134.         LDA player_y_pos
  135.         SEC
  136.         SBC #$5E
  137.         CMP #$04
  138.         BCS .nope
  139.        
  140.         INC attempt_count
  141.         ; LDA.b player_x_pos
  142.         ; STA coords_1x
  143.         LDA.b player_y_pos
  144.         STA coords_1y
  145.         LDA.b player_y_speed
  146.         STA disp_y_speed
  147.        
  148.     .nope:
  149.         RTS
  150.    
  151.    
  152. warnpc $A000
  153.  
  154.  
  155.  
  156. %org(26, $B073)
  157. coins:
  158.         LDY #$00
  159.         LDA frames_held
  160.         CMP #100
  161.         BCC +
  162.         SBC #100
  163.         STA frames_held
  164.         JMP $B094
  165.        
  166.     +
  167.         JMP $B09F
  168.        
  169.        
  170.        
  171.        
  172. ; %org(30, $897D)
  173.         ; STA $7CF2
  174.         ; JSR level_transition
  175.        
  176.  
  177.  
  178. ; status bar template
  179. org $35438
  180.     db $2B, $28
  181.     db $0C, $EF, $EF, $EF, $EF, $EF, $EF, $AE, $AF, $FE, $EC, $F0, $F0
  182.     db $2B, $45
  183.     db $0F, $FE, $F0, $FE, $F0, $F0, $F0, $F0, $F0, $F0, $FE, $FE, $ED, $F0, $F0, $F0
  184.     db $00
  185.  
  186. ; draw lag frames instead of (M)/(L)
  187. ; %org(26, $A3CD)
  188.         ; JSR draw_dropped_frames
  189.  
  190. %org(26, $B175)
  191. score:
  192.         LDA $65
  193.         ORA $66
  194.         BNE .level
  195.         RTS
  196.        
  197.     .level:
  198.         LDY #$00
  199.         LDA jump_x_pos
  200.         JSR draw_hex_to_score
  201.         INY
  202.         LDA jump_x_sub
  203.         LSR
  204.         LSR
  205.         LSR
  206.         LSR
  207.         JSR draw_hex_to_score_low
  208.         LDY #$03
  209.         LDA jump_x_speed
  210.         JSR draw_hex_to_score
  211.         INY
  212.         LDA coords_1y
  213.         JSR draw_hex_to_score_low
  214.        
  215.         ; can draw other stuff here
  216.         JSR draw_saved_y_speed
  217.         JMP draw_input_display
  218.        
  219.  
  220. draw_hex_to_score:
  221.         PHA
  222.         LSR
  223.         LSR
  224.         LSR
  225.         LSR
  226.         CMP #$0A
  227.         BCC +
  228.         SBC #$6A
  229.     +
  230.         ADC #$F0
  231.         STA sb_score,y
  232.         PLA
  233.     .low:
  234.         AND #$0F
  235.         CMP #$0A
  236.         BCC +
  237.         SBC #$6A
  238.     +
  239.         ADC #$F0
  240.         STA sb_score+1,y
  241.         RTS
  242.        
  243.        
  244. warnpc $B24A
  245.  
  246.  
  247. ; meme
  248. %org(10, $CF1C)
  249.         JSR check_if_hands_asleep
  250.        
  251. ; free space
  252. %org(10, $D550)
  253. check_if_hands_asleep:
  254.         LDA $7F53
  255.         BNE .no_hand
  256.         LDA $0746,x
  257.         CMP #$04
  258.         BEQ .no_hand
  259.         LDA $0782,x
  260.         RTS
  261.  
  262.     .no_hand:
  263.         LDA #$01
  264.         RTS
  265.  
  266. ; anchor is a powerup
  267. %org(26, $A554)
  268.         dw $A5B8
  269.  
  270. ; anchor sfx
  271. %org(26, $A55C)
  272.         db $90
  273.  
  274. %org(26, $A5CC)
  275.         JSR check_small_powerup
  276.  
  277.  
  278. %org(26, $B03C)
  279. ; attempt count to lives counter
  280. lives:
  281.         LDA attempt_count
  282.         BPL +
  283.         EOR #$FF
  284.         CLC
  285.         ADC #$01
  286.     +
  287.         LDY #$00
  288.         JMP $B056
  289.  
  290. ; empty
  291. %org(26, $B520)
  292. draw_saved_y_speed:
  293.         LDY gfx_buffer_index
  294.         LDA disp_y_speed
  295.        
  296.         ; decimal
  297.         ; LDX #$F0
  298.     ; -
  299.         ; CMP #10
  300.         ; BCC +
  301.         ; SBC #10
  302.         ; INX
  303.         ; BCS -
  304.     ; +
  305.         ; ORA #$F0
  306.         ; STA gfx_buffer+4,y
  307.         ; TXA
  308.         ; STA gfx_buffer+3,y
  309.        
  310.         ; hex
  311.         PHA
  312.         LSR
  313.         LSR
  314.         LSR
  315.         LSR
  316.         CMP #$0A                ; adjust tile # for A-F digits
  317.         BCC +
  318.         SBC #$6A
  319.     +
  320.         CLC
  321.         ADC #$F0
  322.         STA gfx_buffer+3,y
  323.        
  324.         PLA
  325.         AND #$0F
  326.         CMP #$0A
  327.         BCC +
  328.         SBC #$6A
  329.     +
  330.         CLC
  331.         ADC #$F0
  332.         STA gfx_buffer+4,y
  333.        
  334.         ; block terminator
  335.         LDA #$00
  336.         STA gfx_buffer+5,y
  337.        
  338.         ; copypasta
  339.         LDX #$27
  340.         LDA $03EF               ; vertical level
  341.         BNE ++
  342.         LDX #$2B
  343.         LDA $070A               ; level tileset
  344.         CMP #16
  345.         BEQ +
  346.         CMP #17
  347.         BNE ++
  348.     +
  349.         LDX #$23
  350.     ++
  351.         TXA
  352.         ; vram hi
  353.         STA gfx_buffer,y
  354.         ; vram lo
  355.         LDA #!dropped_count_pos
  356.         STA gfx_buffer+1,y
  357.         ; block size
  358.         LDA #$02
  359.         STA gfx_buffer+2,y
  360.         ; update index
  361.         LDA gfx_buffer_index
  362.         CLC
  363.         ADC #$05
  364.         STA gfx_buffer_index
  365.         RTS
  366.        
  367.        
  368.  
  369. check_small_powerup:
  370.         CMP #$0A
  371.         BNE +
  372.         LDA #$00
  373.     +
  374.         ASL
  375.         ASL
  376.         TAY
  377.         RTS
  378.        
  379.  
  380. draw_input_display:
  381.         LDY gfx_buffer_index
  382.  
  383.         ;bitwise: abet udlr
  384.         LDA current_input
  385.        
  386.         ; right
  387.         LSR
  388.         PHA
  389.         LDA #!r_tile
  390.         BCC +
  391.         LDA #!R_tile
  392.     +
  393.         STA gfx_buffer+5,y
  394.         PLA
  395.        
  396.         ; left
  397.         LSR
  398.         PHA
  399.         LDA #!l_tile
  400.         BCC +
  401.         LDA #!L_tile
  402.     +
  403.         STA gfx_buffer+3,y
  404.         PLA
  405.        
  406.         ; up/down
  407.         PHA
  408.         AND #$03
  409.         TAX
  410.         LDA .ud_tiles,x
  411.         STA gfx_buffer+4,y
  412.         PLA
  413.        
  414.         ; a/b
  415.         LSR
  416.         LSR
  417.         LSR
  418.         LSR
  419.         TAX
  420.         LDA .ab_tiles,x
  421.         STA gfx_buffer+6,y
  422.        
  423.         ; block terminator
  424.         LDA #$00
  425.         STA gfx_buffer+7,y
  426.        
  427.         ; copypasta
  428.         LDX #$27
  429.         LDA $03EF               ; vertical level
  430.         BNE ++
  431.         LDX #$2B
  432.         LDA $070A               ; level tileset
  433.         CMP #16
  434.         BEQ +
  435.         CMP #17
  436.         BNE ++
  437.     +
  438.         LDX #$23
  439.     ++
  440.         TXA
  441.         ; vram hi
  442.         STA gfx_buffer,y
  443.         ; vram lo
  444.         LDA #!input_display_pos
  445.         STA gfx_buffer+1,y
  446.         ; block size
  447.         LDA #$04
  448.         STA gfx_buffer+2,y
  449.         ; update index
  450.         LDA gfx_buffer_index
  451.         CLC
  452.         ADC #$07
  453.         STA gfx_buffer_index
  454.         RTS
  455.  
  456. .ud_tiles:
  457.     db !ud_tile, !uD_tile, !Ud_tile, !UD_tile
  458.  
  459. .ab_tiles:
  460.     db !ab_tile, !aB_tile, !Ab_tile, !AB_tile
  461.  
  462.        
  463.  
  464.        
  465. warnpc $C000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement