APPLE电脑游戏的消音技巧

Author: 广 东 刘 广 林 Date: 1993-05-07

        我研究了一下APPLE机的发音原理。APPLE机的扬声器是靠触发机内$C030地址来达到发音目的的。所以我想游戏中肯定有触发$C030的程序模块,只要修改该模块(或者是多个模块),将其触发地址改为$0300,那么程序执行到这里时,程序本应触发$C030地址却因修改变成触发$0300,扬声器就不会响了。下面是我根据上面的原理使一个游戏声音消失的二进制程序。整个修改是在机器内进行的,也就是说磁盘上存放游戏本身并没有改动。该程序可以把绝大部分的文件启动的游戏声音消除掉。有APPLE机或中华学习机的朋友不妨一试。
        程序清单:
        ]CALL-151
        *BC56L
        BC56-18CLC;
        BC57-AD72AALDA
        $AA72;将游戏起始地址送入$2A,$2B单元
        BC5A-852ASTA$2A;
        $2A,2B将作计数器
        BC5C-6D60AAADC
        $AA60;起始地址+长度=结束地址
        BC5F-8528STA$28;送入$28,$29单元
        BC61-AD73AALDA$AA73;
        BC64-852BSTA$2B;
        BC66-6D61AAADC$AA61;
        BC69-8529STA$29;
        BC6B-A000LDY#$00;循环开始
        BC6D-B12ALDA($2A),Y;
        BC6F-C930CMP#$30;低位=$30
        BC71-D015BNE$BC88;
        BC73-A001LDY#$01;
        BC75-B12ALDA($2A),Y;
        BC77-C9C0CMP#$C0;高位=$C0
        BC79-D00DBNE$BC88;
        BC7B-A987LDA#$87;找到一个,响玲
        BC7D-20EDFDJSR$FDED;
        BC80-A903LDA#$03;高位改为$03
        BC82-912ASTA($2A),Y;
        BC84-A000LDY#$00;低位改为$00
        BC86-912ASTA($2A),Y;
        BC88-18CLC;计数器加1
        BC89-A52ALDA$2A;
        BC8B-6901ADC#$01;
        BC8D-852ASTA$2A;
        BC8F-A52BLDA$2B;
        BC91-6900ADC#$00;
        BC93-852BSTA$2B判断到了结尾吗?
        BC95-C529CMP$29;
        BC97-D0D2BNE$BC6B;
        BC99-A528LDA$28;
        BC9B-C52ACMP$2A;
        BC9D-D0CCBNE$BC6B;
        BC9F-6C72AAJMP($AA72);是,
        修改完毕,游戏开始。
        建立此程序后,按CTRL-RESET退回BASIC状态,执行"BSAVENOSOUND,A$BC56,L80"。
        玩游戏时步骤为:
        ]BLOADNOSOUND
        ]BLOAD游戏程序名
        ]CALL-151
        *BC56G(广东刘广林)