From 0cab6757a373b89e2be515fa0f2d0dd8407eb521 Mon Sep 17 00:00:00 2001 From: p4plus2 Date: Sun, 3 Sep 2017 06:46:35 -0700 Subject: [PATCH] Comment and label BRR sample upload routine. --- bank_B5.asm | 194 ++++++++++++++++++++++++++-------------------------- bank_EE.asm | 5 +- notes.txt | 1 - 3 files changed, 99 insertions(+), 101 deletions(-) diff --git a/bank_B5.asm b/bank_B5.asm index d5bfbe4..c500eb8 100644 --- a/bank_B5.asm +++ b/bank_B5.asm @@ -248,7 +248,7 @@ upload_spc_engine_wrapper: upload_spc_engine: JSR upload_spc_base_engine ;$B58191 \ Upload the core of the SPC engine JSR upload_spc_sound_engine ;$B58194 | Upload the sound processor of the SPC engine - JSR CODE_B582A9 ;$B58197 | + JSR upload_global_samples ;$B58197 | LDA #sound_effect_data ;$B5819A |\ Load pointer to sound effect data STA $32 ;$B5819D | | LDA.w #sound_effect_data>>16 ;$B5819F | | @@ -403,23 +403,23 @@ upload_spc_sound_engine: STA $34 ;$B58299 |/ LDA #$0560 ;$B5829B |\ Set the ARAM destination STA $35 ;$B5829E |/ - LDA #$067F ;$B582A0 |\ Set the number of bytes to transfer + LDA #$067F ;$B582A0 |\ Set the number of words to transfer STA $37 ;$B582A3 |/ JSR upload_spc_block ;$B582A5 | Upload SPC block RTS ;$B582A8 / -CODE_B582A9: ; \ - LDA #DATA_EE11F9 ;$B582A9 |\ +upload_global_samples: ; \ + LDA #global_sample_map ;$B582A9 |\ Load the pointer to the global sample map STA $0E ;$B582AC | | - LDA.w #DATA_EE11F9>>16 ;$B582AE | | + LDA.w #global_sample_map>>16 ;$B582AE | | STA $10 ;$B582B1 |/ - LDA #$3100 ;$B582B3 |\ ARAM destination + LDA #$3100 ;$B582B3 |\ Source directory ARAM destination STA $02 ;$B582B6 |/ STZ $0A ;$B582B8 | - LDA #$3400 ;$B582BA |\ + LDA #$3400 ;$B582BA |\ Sample data ARAM destination STA $06 ;$B582BD |/ - STZ $0A ;$B582BF | - JSR CODE_B582D1 ;$B582C1 | + STZ $0A ;$B582BF | Reset the sample counter + JSR sample_uploader ;$B582C1 | LDA $02 ;$B582C4 |\ STA $04 ;$B582C6 |/ LDA $06 ;$B582C8 |\ @@ -428,57 +428,57 @@ CODE_B582A9: ; \ STA $0C ;$B582CE |/ RTS ;$B582D0 / -CODE_B582D1: - STZ $0A ;$B582D1 \ +sample_uploader: + STZ $0A ;$B582D1 \ Reset the sample counter LDX #$0000 ;$B582D3 | LDA $0A ;$B582D6 |\ STA $3A ;$B582D8 |/ - LDA $0E ;$B582DA |\ - STA $3E ;$B582DC |/ - LDA $10 ;$B582DE |\ + LDA $0E ;$B582DA |\ Copy sample map pointer + STA $3E ;$B582DC | | + LDA $10 ;$B582DE | | STA $40 ;$B582E0 |/ - LDA $02 ;$B582E2 |\ + LDA $02 ;$B582E2 |\ Copy source directory ARAM destination STA $42 ;$B582E4 |/ - LDA $06 ;$B582E6 |\ + LDA $06 ;$B582E6 |\ Copy sample data ARAM destination STA $44 ;$B582E8 |/ -CODE_B582EA: ; | - LDA [$3E] ;$B582EA | - INC $3E ;$B582EC |\ +.parse_next_sample ; | + LDA [$3E] ;$B582EA | Load sample number + INC $3E ;$B582EC |\ Increment the sample map pointer INC $3E ;$B582EE |/ - CMP #$FFFF ;$B582F0 |\ + CMP #$FFFF ;$B582F0 |\ Sample number FFFF implies end of table, branch and upload BEQ .upload_sample_directory ;$B582F3 |/ - STA $3C ;$B582F5 |\ + STA $3C ;$B582F5 |\ Triple sample number to index sample pointer table CLC ;$B582F7 | | ADC $3C ;$B582F8 | | ADC $3C ;$B582FA |/ - TXY ;$B582FC | - TAX ;$B582FD | - LDA.l DATA_EE0D86,x ;$B582FE |\ + TXY ;$B582FC | Preserve ARAM buffer index + TAX ;$B582FD |\ Load pointer to the current sample + LDA.l sample_table,x ;$B582FE | | STA $32 ;$B58302 | | - LDA.l DATA_EE0D88,x ;$B58304 | | + LDA.l sample_table+2,x ;$B58304 | | STA $34 ;$B58308 |/ - TYX ;$B5830A | - LDA $06 ;$B5830B |\ + TYX ;$B5830A | Restore ARAM buffer index + LDA $06 ;$B5830B |\ Store sample data ARAM destination STA $7E2200,x ;$B5830D |/ - INX ;$B58311 |\ + INX ;$B58311 |\ Increment ARAM buffer index INX ;$B58312 |/ - LDA [$32] ;$B58313 |\ + LDA [$32] ;$B58313 |\ Load size of unlooped sample data CLC ;$B58315 | | - ADC $06 ;$B58316 | | - STA $7E2200,x ;$B58318 |/ - INX ;$B5831C |\ + ADC $06 ;$B58316 | | Add unlooped sample data and ARAM destination + STA $7E2200,x ;$B58318 |/ Store destination of sample loop entry + INX ;$B5831C |\ Increment ARAM buffer index INX ;$B5831D |/ - INC $02 ;$B5831E |\ + INC $02 ;$B5831E |\ Increase source directory ARAM destination by 4 bytes INC $02 ;$B58320 | | INC $02 ;$B58322 | | INC $02 ;$B58324 |/ - INC $32 ;$B58326 |\ + INC $32 ;$B58326 |\ Increment pointer to current sample data INC $32 ;$B58328 |/ - LDA [$32] ;$B5832A |\ + LDA [$32] ;$B5832A |\ Load size of looped sample data CLC ;$B5832C | | - ADC $06 ;$B5832D | | - STA $06 ;$B5832F |/ - BRA CODE_B582EA ;$B58331 / + ADC $06 ;$B5832D | | Add looped sample data and ARAM destination + STA $06 ;$B5832F |/ Store next potential ARAM sample destination + BRA .parse_next_sample ;$B58331 / Parse the next sample .upload_sample_directory ; \ LDA #$2200 ;$B58333 |\ Set upload source to $7E2200 @@ -489,102 +489,102 @@ CODE_B582EA: ; | STA $35 ;$B5833F |/ LDA #$3400 ;$B58341 |\ Calculate and set upload size SEC ;$B58344 | | - SBC $42 ;$B58345 | | ($3400 - ARAM dest + 1) / 2 + SBC $42 ;$B58345 | | word count = ($3400 - ARAM dest + 1) / 2 CLC ;$B58347 | | INC A ;$B58348 | | LSR A ;$B58349 | | STA $37 ;$B5834A |/ JSR upload_spc_block ;$B5834C | Upload sample directory - LDA #DATA_EE11F9 ;$B5834F |\ + LDA #global_sample_map ;$B5834F |\ Load global sample map pointer STA $3E ;$B58352 | | - LDA.w #DATA_EE11F9>>16 ;$B58354 | | + LDA.w #global_sample_map>>16 ;$B58354 | | STA $40 ;$B58357 |/ - LDA $0E ;$B58359 |\ - CMP $3E ;$B5835B | | - BNE CODE_B58365 ;$B5835D |/ - LDA $10 ;$B5835F |\ + LDA $0E ;$B58359 |\ If the sample map pointer is not the global samples + CMP $3E ;$B5835B | | + BNE .map_global_sample ;$B5835D |/ Branch and include global samples in the mapping + LDA $10 ;$B5835F |\ If the pointer does match the global samples CMP $40 ;$B58361 | | - BEQ CODE_B583B8 ;$B58363 |/ -CODE_B58365: ; | - LDA [$3E] ;$B58365 |\ - CMP #$FFFF ;$B58367 | | - BEQ CODE_B5837F ;$B5836A |/ - INC $3E ;$B5836C |\ + BEQ .upload_samples ;$B58363 |/ Branch ahead and don't double map global samples + .map_global_sample ; | + LDA [$3E] ;$B58365 | Load the sample number + CMP #$FFFF ;$B58367 |\ Sample number FFFF implies end of table, in that case + BEQ .map_set_specific_samples ;$B5836A |/ Branch and map set specific samples + INC $3E ;$B5836C |\ Increment sample map pointer INC $3E ;$B5836E |/ - TAX ;$B58370 | - LDA $0A ;$B58371 |\ + TAX ;$B58370 | Use sample number as an index + LDA $0A ;$B58371 |\ Store the sample id at the sample number index SEP #$20 ;$B58373 | | - STA $7E2200,x ;$B58375 |/ - REP #$20 ;$B58379 | - INC $0A ;$B5837B | - BRA CODE_B58365 ;$B5837D / + STA $7E2200,x ;$B58375 | | + REP #$20 ;$B58379 |/ + INC $0A ;$B5837B | Increment the sample number count + BRA .map_global_sample ;$B5837D / Parse next sample map entry -CODE_B5837F: ; \ - LDA $0E ;$B5837F |\ - STA $3E ;$B58381 |/ - LDA $10 ;$B58383 |\ +.map_set_specific_samples ; \ + LDA $0E ;$B5837F |\ Load target sample map pointer + STA $3E ;$B58381 | | + LDA $10 ;$B58383 | | STA $40 ;$B58385 |/ -CODE_B58387: ; | - LDA [$3E] ;$B58387 |\ - CMP #$FFFF ;$B58389 | | - BEQ .upload_source_number_table ;$B5838C |/ - INC $3E ;$B5838E |\ +.map_sample ; | + LDA [$3E] ;$B58387 | Load the sample number + CMP #$FFFF ;$B58389 |\ Sample number FFFF implies end of table, branch and upload + BEQ .upload_source_number_map ;$B5838C |/ + INC $3E ;$B5838E |\ Increment sample map pointer INC $3E ;$B58390 |/ - TAX ;$B58392 | - LDA $0A ;$B58393 |\ + TAX ;$B58392 | Use sample number as an index + LDA $0A ;$B58393 |\ Store the sample id at the sample number index SEP #$20 ;$B58395 | | STA $7E2200,x ;$B58397 | | REP #$20 ;$B5839B |/ - INC $0A ;$B5839D | - BRA CODE_B58387 ;$B5839F / + INC $0A ;$B5839D | Increment the sample number count + BRA .map_sample ;$B5839F / Parse next sample map entry -.upload_source_number_table ; \ +.upload_source_number_map ; \ LDA #$2200 ;$B583A1 |\ Set upload source to $7E2200 STA $32 ;$B583A4 | | LDA #$007E ;$B583A6 | | STA $34 ;$B583A9 |/ LDA #$0560 ;$B583AB |\ Set ARAM Destination to $0560 STA $35 ;$B583AE |/ - LDA #$0080 ;$B583B0 |\ Set transfer size to 128 bytes + LDA #$0080 ;$B583B0 |\ Set transfer size to 128 words STA $37 ;$B583B3 |/ JSR upload_spc_block ;$B583B5 | Upload the source number table -CODE_B583B8: ; | - LDA $44 ;$B583B8 |\ +.upload_samples ; | + LDA $44 ;$B583B8 |\ Load and copy the sample destination pointer STA $06 ;$B583BA |/ -CODE_B583BC: ; | - LDA [$0E] ;$B583BC |\ - CMP #$FFFF ;$B583BE | | - BEQ CODE_B583FA ;$B583C1 |/ - INC $0E ;$B583C3 |\ +.upload_next_sample ; | + LDA [$0E] ;$B583BC | Load the sample number + CMP #$FFFF ;$B583BE |\ Sample number FFFF implies end of table, branch and return + BEQ .return ;$B583C1 |/ + INC $0E ;$B583C3 |\ Increment sample map pointer INC $0E ;$B583C5 |/ - STA $3C ;$B583C7 |\ + STA $3C ;$B583C7 |\ Triple sample number to index sample data pointer table CLC ;$B583C9 | | ADC $3C ;$B583CA | | - ADC $3C ;$B583CC |/ - TAX ;$B583CE | - LDA.l DATA_EE0D86,x ;$B583CF |\ + ADC $3C ;$B583CC | | + TAX ;$B583CE |/ + LDA.l sample_table,x ;$B583CF |\ Load a the pointer to the sample. STA $32 ;$B583D3 | | - LDA.l DATA_EE0D88,x ;$B583D5 | | + LDA.l sample_table+2,x ;$B583D5 | | STA $34 ;$B583D9 |/ - INC $32 ;$B583DB |\ + INC $32 ;$B583DB |\ Skip unlooped intro size INC $32 ;$B583DD |/ - LDA $06 ;$B583DF |\ + LDA $06 ;$B583DF |\ Load and copy the ARAM destination STA $35 ;$B583E1 |/ - LDA [$32] ;$B583E3 |\ + LDA [$32] ;$B583E3 |\ Load and copy the size of the sample to upload STA $37 ;$B583E5 |/ - CLC ;$B583E7 |\ - ADC $35 ;$B583E8 | | - STA $06 ;$B583EA |/ - CLC ;$B583EC |\ + CLC ;$B583E7 |\ Add the ARAM destination and sample size + ADC $35 ;$B583E8 | | + STA $06 ;$B583EA |/ Store this as the next ARAM destination + CLC ;$B583EC |\ Convert bytes to upload to words to upload INC $37 ;$B583ED | | LSR $37 ;$B583EF |/ - INC $32 ;$B583F1 |\ + INC $32 ;$B583F1 |\ Increment pointer so the sample data start is the next byte INC $32 ;$B583F3 |/ - JSR upload_spc_block ;$B583F5 | - BRA CODE_B583BC ;$B583F8 / + JSR upload_spc_block ;$B583F5 | Upload the sample data + BRA .upload_next_sample ;$B583F8 / Continue uploading samples -CODE_B583FA: - RTS ;$B583FA / +.return + RTS ;$B583FA > All done, no more samples. upload_inline_spc_block: ; \ LDA [$32] ;$B583FB |\ Load the destination ARAM address from the block @@ -673,7 +673,7 @@ CODE_B58469: STA $06 ;$B58486 | LDA $0C ;$B58488 | STA $0A ;$B5848A | - JSR CODE_B582D1 ;$B5848C | + JSR sample_uploader ;$B5848C | RTS ;$B5848F / DATA_B58490: diff --git a/bank_EE.asm b/bank_EE.asm index 0d66609..52de9d0 100644 --- a/bank_EE.asm +++ b/bank_EE.asm @@ -1833,8 +1833,7 @@ DATA_1199: base off arch 65816 -DATA_EE0D86: - %offset(DATA_EE0D88, 2) +sample_table: dl DATA_EECE62 dl DATA_EECFFC dl DATA_EED1CC @@ -2229,7 +2228,7 @@ DATA_EE117B: DATA_EE11F6: db $00, $00, $00 -DATA_EE11F9: +global_sample_map: db $01, $00, $02, $00, $03, $00, $04, $00 db $06, $00, $08, $00, $07, $00, $05, $00 db $00, $00, $A5, $00, $0C, $00, $09, $00 diff --git a/notes.txt b/notes.txt index 17d4427..60f0678 100644 --- a/notes.txt +++ b/notes.txt @@ -127,7 +127,6 @@ CODE_B3A369 ;<-- Some sort of execptr routine CODE_B6D923 ;<-- Change to bank BA -DATA_EE0D86 ;Pointers to used at $32 (long) DATA_EE1086 ;More long pointers DATA_EE117B ;Even more DATA_BCB600 ;Collision detection pointers