If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
15-in-1 (KS-122)
15-in-1 |
---|
Developer: Kaiser Electronics This game has uncompiled source code. This game has a notes page |
15-in-1 is yet another unlicensed NES multi-cart from Taiwan.
Sub-Page
Notes |
Unused Graphics
Unused bigger versions of the stars used for the menu border.
Unused Text
Bizarrely, two of the text strings on the internal game list were seemingly replaced at the last minute. Pinball erroneously added a space in the title, while Sky Destroyer replaced Ma Chiang. The unused strings can be found with the rest of the used menu text starting at 0x24FA in the ROM, while the replacement strings can be found starting at 0x3001.
Source Code
Beginning at 0x3010 is a partly corrupted chunk of the menu's source code. A comment near the beginning dates this code to May 7, 1987.
2.PIN BALÌ*****¤P¹(ðÈÀ�� „P`$„R`*****�� ��$* Qä �©�…�¥�� Æ�¥�É�°�©�…�ˆÐìæ�`* $* GAIN SELECT * $* 9.SKY DESTROYEÒ * $* 1987.5.7 BY L.J.L * $********************************** �; Ú $FFFA Ú Û $17FA Û�; �Ø NMI1 Ø RESET1 Ø RESET1 �; Ú $E000 Ú�Û $800 �; $********************************** �; �TIME Ù 05 �TIME1 Ù 01 �TIME2 Ù 02 TIME3 Ù 5 �TIME4 Ù 30 �FLHTIM Ù 30 �BLOCKNO Ù 22 �BLOCKNO1Ù 18 �GAMENO Ù 15 �BLOCKSTRÙ 04 �BLOCKST1Ù 04 �PRNSTR Ù BLOCKSTR+1 �PRNSTR1 Ù BLOCKST1+2 �TITLROW Ù 25 �TITCLM Ù 09 �TITLROW1Ù 27 �JPRES Ù $FFFC»2BYTE �HV Ù $9000 �TITCLM1 Ù 06 �; $********************************** �; �COUNT Ü $00 �ROW Ü $01 �COLUMN Ü $02 �POIN¥�)�ð�`� ©?� ©�� ¥UÉ��L„ó¥U)�Ð�æT¤TÀ�� „TL<óÆT¤T�� �„T¢�¹` � ÈÊ�öÆS��©�…S Tó`¥R �™` ™c �i"ˆ�ôæR¥R)�É ��¥Ri�…RæV¥VÉ��© …VæU`êÆX�ú©�…X� ©?� ©�� ¥YÉ�°*¥Y)�Ð�©�� � � æY`¥bH�i�H)�É h�i�…bhL¨ó �© ™X ˆ�ú…U`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ � ©2…R`LKCONT Ü $15 �STRCNT Ü $16 �BKGRNCT Ü $17 �ROCONT Ü $18 �ROADR Ü $19»2BYT �; $********************************** �; �BANKBUF Ù $C000 �; $********************************** �; �RESET1 Ê�RESET �NMI1 Ê�NMI �; $********************************** �; �; RESET : �ª �š �; �Í�#$10 Ð�$2000 Ð�^1 Í�$2002 �…�<1 �; �Î�#$FF �° �; �Ï�#$00 �Í�#$00 �^2 Ð�$00,Y Ð�$200,Y ��Ÿ �†�<2 �; �Í�#$00 �^0 Ð�SELCONT �Ò�BANKBUF B�; �Ï�#$5C �Î�#$17 �Í�#$10 Ð�COUNT Ð�; �^1 Í�STRTTAB,X Ð�$2A3,Y ��Í�#$10 Ð�$2A1,Y � Í�STRTTAB,X R�Á�#$03 �Â�#$E0 Ð�$2A2,Y � Í�COUNT Í Ð�$2A0,Y ��™ �À�#$09 Ð�COUNT Ð� � � � �œ �…�<1 �; Í�#TIME Í Ð�COUNT Ð Í�#TIME2 ��Ð�MOVCONT M�Í�#FLHTIM #�Ð�FLHCONT F�Í�#$0C Ð�STRCNT ��; �Í�#$00 Ð�$2001 Ð Í�$2002 Í�; �Í�#$2B Ð�$2006 Ð�Í�#$C0 Ð�$2006 Ð�; �Ï�#$00 �^6 Î�BLKCLRTB,Y �Å�#$FF �‡�>4 �Ÿ �Í�BLKCLRTB,Y C�^5 Ð�$2007 �œ �†�<5 �; �Ÿ �†�<6 �; �^4 Ë�SETCOLOR �; �; Í�$2002 Í�Í�#$20 Ð�$2006 Ð�Í�#$00 Ð�$2006 Ð�; �Î�#$03 �Ï�#$C0 �Í�#$1F �^1 Ð�$2007 � �†�<1 �œ �…�<1 �; Í�$2002 Í�Í�#$28 Ð�$2006 Ð�Í�#$00 Ð�$2006 Ð�; �Î�#$03 �Ï�#$C0 �Í�#$1F �^1 Ð�$2007 � �†�<1 �œ �…�<1 �; Í�$2002 Í�Í�#$00 Ð�$2005 Ð Ð�$2005 Ð�; �Í�#$0F Ð�$4015 Ð�Í�#$0F Ð�$4000 Ð�Í�#$00 Ð�$4001 Ð�Í�#$1E Ð�$2001 Ð�Í�#$88 Ð�$2000 Ð�Í�#02 �Ð�$74 �Ð�$77 �Ð�$76 �; �LOOP Ê�LOOP �; NMI : �Í�#$00 Ð�$2001 Ð�; �Í�#$02 Ð�$4014 Ð Ë�$C0D6 Ë�; �Í�BKGRNCT B�Á�#$01 �†�>1 �Ë�MOVSTRT M�Ê�>2 �; �^1 Ë�ROCLR �; �^2 É�BKGRNCT Í�POINT Í�× �¬ �Í�ADRTAB+1,X T�¡ �Í�ADRTAB,X D�¡ �¥ �; ADRTAB : �Ø CHANGCLR-1 N�Ø PRNTITLE-1 T�Ø PRENTCHK-1 N�Ø SELECT-1 E�; CHANGCLR: Ç�COUNT Ç�†�>4 Í�#TIME Í Ð�COUNT Ð�; �Ï�BLKCONT B�†�>1 Ë�PBKSTR ��Ê�>3 �; �^1 Æ�#BLOCKNO1+1 �„�>2 Ë�PRNMID ��Ê�>3 �; �^2 Ë�PRNTIAL �^3 É�BLKCONT �Í�BLKCONT B�Ä�#BLOCKNO1+2 C�ƒ�>4 É�POINT É�Í�#$00 �Ð�BLKCONT B�; �^4 Ê�NMIOUT �; PRNTITLE: �Í�BLKCONT B�Ä�#$0A �ƒ�>2 �Ä�#$0B �„�>1 �; �Í�#TITLROW T�Ð�ROW �Í�#TITCLM # Ð�COLUMN � Î�/TITLETB1 I Í�#TITLETB1 I�Ë�PRNROW1 P�^2 É�BLKCONT Ê�NMIOUT ��; �^1 Ä�#$14 �ƒ�<2 Í�#TITLROW1 I�Ð�ROW �Í�#TITCLM1 T Ð�COLUMN � Î�/TITLETB2 I Í�#TITLETB2 I�; �Ë�PRNROW1 P�; É�POINT É Ê�NMIOUT ��; PRENTCHK: �Í�PRINTMK P †�PRINT †�Í�PRNTCONT R� �× �¬ �; �Í�MSGTAB+1,X T Ð�PRNTADR+1 N�Í�MSGTAB,X S�Ð�PRNTADR P�; �É�ROW �± �†�>1 �Í�#PRNSTR #�Ð�ROW �^1 Í�#PRNSTR1 Ð�COLUMN ��Í�#$00 Ð�INDEX Ð Í�#TIME1 � Ð�COUNT Ð�Ç�PRINTMK P�É�PRNTCONT R Ê�NMIOUT ��; PRINT : Ç�COUNT Ç †�PNTERR � Í�#TIME1 � Ð�COUNT Ð�; �; Ë�SETADR � Ï�INDEX Ï�Í�(PRNTADR),Y T�…�>0 �; �É�PRINTMK P�Ï�PRNTCONT R�Æ�#GAMENO #�ƒ�>1 É�POINT É�; �^0 ¡ �Ë�INCROCN I�¢ �^1 É�INDEX �Á�#$7F Ð�$2007 Ð�; �PNTERR Ê�NMIOUT �; SELECT : �Í�SELECTMK E�†�SELECT1 S�; �Ç�SELECTMK E Í�#TIME3 ��Ð�KEYCONT K�; �Ï�#$03 �^1 Í�CRSTAB,Y Ð�$200,Y �� �†�<1 �Í�SELCONT S�× �× �× �™ À�CRSTAB�à à à
Most of the unprintable text is actually encoded ASM opcodes and other symbols. (See Notes:15-in-1 (KS-122).)
Here is a partial decoding of the above:
2.PIN BALL*****¤P¹(ðÈÀ��� �„P`$„R`*****�� ��$* Qä �©�…�¥��� Æ�¥�É�°�©�…�ˆÐìæ�`* $* GAIN SELECT * $* 9.SKY DESTROYER * $* 1987.5.7 BY L.J.L * $********************************** �; .org $FFFA .org Û $17FA Û�; �.addr NMI1 .addr RESET1 .addr RESET1 �; .org $E000 .org�Û $800 �; $********************************** �; �TIME = 05 �TIME1 = 01 �TIME2 = 02 TIME3 = 5 �TIME4 = 30 �FLHTIM = 30 �BLOCKNO = 22 �BLOCKNO1= 18 �GAMENO = 15 �BLOCKSTR= 04 �BLOCKST1= 04 �PRNSTR = BLOCKSTR+1 �PRNSTR1 = BLOCKST1+2 �TITLROW = 25 �TITCLM = 09 �TITLROW1= 27 �JPRES = $FFFC»2BYTE �HV = $9000 �TITCLM1 = 06 �; $********************************** �; �COUNT = $00 �ROW = $01 �COLUMN = $02 �POIN¥�)�ð�`� ©?�� ©��� ¥UÉ���L„ó¥U)�Ð�æT¤TÀ��� �„TL<óÆT¤T�� �„T¢�¹`��� ÈÊ�öÆS��©�…S Tó`¥R �™`�™c��i"ˆ�ôæR¥R)�É ���¥Ri�…RæV¥VÉ���©�…VæU`êÆX�ú©�…X� ©?�� ©��� ¥YÉ�°*¥Y)�Ð�©��� �� �� æY`¥bH�i�H)�É h��i�…bhL¨ó �©�™X�ˆ�ú…U`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ��� ©2…R`LKCONT = $15 �STRCNT = $16 �BKGRNCT = $17 �ROCONT = $18 �ROADR = $19»2BYT �; $********************************** �; �BANKBUF = $C000 �; $********************************** �; �RESET1 JMP RESET �NMI1 JMP NMI �; $********************************** �; �; RESET : �SEI �CLV �; �LDA #$10 STA $2000 ^1 LDA $2002 �BPL <1 �; �LDX #$FF �TXS �; �LDY #$00 �LDA #$00 �^2 STA $00,Y STA $200,Y ��INY �BNE <2 �; �LDA #$00 �^0 STA SELCONT �STY BANKBUF B�; �LDY #$5C �LDX #$17 �LDA #$10 STA COUNT ; �^1 LDA STRTTAB,X STA $2A3,Y ��LDA #$10 STA $2A1,Y � LDA STRTTAB,X R�AND #$03 �ORA #$E0 STA $2A2,Y � LDA COUNT STA $2A0,Y ��CLC �ADC #$09 STA COUNT DEY �DEY �DEY �DEY �DEX �BPL <1 �; LDA #TIME STA COUNT LDA #TIME2 ��STA MOVCONT M�LDA #FLHTIM #�STA FLHCONT F�LDA #$0C STA STRCNT ��; �LDA #$00 STA $2001 LDA $2002 ; �LDA #$2B STA $2006 LDA #$C0 STA $2006 ; �LDY #$00 �^6 LDX BLKCLRTB,Y �CPX #$FF �BEQ >4 �INY �LDA BLKCLRTB,Y C�^5 STA $2007 �DEX �BNE <5 �; �INY �BNE <6 �; �^4 JSR SETCOLOR �; �; LDA $2002 LDA #$20 STA $2006 LDA #$00 STA $2006 ; �LDX #$03 �LDY #$C0 �LDA #$1F �^1 STA $2007 �DEY �BNE <1 �DEX �BPL <1 �; LDA $2002 LDA #$28 STA $2006 LDA #$00 STA $2006 ; �LDX #$03 �LDY #$C0 �LDA #$1F �^1 STA $2007 �DEY �BNE <1 �DEX �BPL <1 �; LDA $2002 LDA #$00 STA $2005 STA $2005 ; �LDA #$0F STA $4015 LDA #$0F STA $4000 LDA #$00 STA $4001 LDA #$1E STA $2001 LDA #$88 STA $2000 STA LDA #02 �STA $74 �STA $77 �STA $76 �; �LOOP JMP LOOP �; NMI : �LDA #$00 STA $2001 ; �LDA #$02 STA $4014 JSR $C0D6 ; �LDA BKGRNCT B�AND #$01 �BNE >1 �JSR MOVSTRT M�JMP >2 �; �^1 JSR ROCLR �; �^2 INC BKGRNCT LDA POINT ASL �TAX �LDA ADRTAB+1,X T�PHA �LDA ADRTAB,X D�PHA �RTS �; ADRTAB : �.addr CHANGCLR-1 N�.addr PRNTITLE-1 T�.addr PRENTCHK-1 N�.addr SELECT-1 E�; CHANGCLR: DEC COUNT BNE >4 LDA #TIME STA COUNT ; �LDY BLKCONT B�BNE >1 JSR PBKSTR ��JMP >3 �; �^1 CPY #BLOCKNO1+1 �BCS >2 JSR PRNMID ��JMP >3 �; �^2 JSR PRNTIAL �^3 INC BLKCONT �LDA BLKCONT B�CMP #BLOCKNO1+2 C�BCC >4 INC POINT LDA #$00 �STA BLKCONT B�; �^4 JMP NMIOUT �; PRNTITLE: �LDA BLKCONT B�CMP #$0A �BCC >2 �CMP #$0B �BCS >1 �; �LDA #TITLROW T�STA ROW �LDA #TITCLM # STA COLUMN � LDX /TITLETB1 I LDA #TITLETB1 I�JSR PRNROW1 P�^2 INC BLKCONT JMP NMIOUT ��; �^1 CMP #$14 �BCC <2 LDA #TITLROW1 I�STA ROW �LDA #TITCLM1 T STA COLUMN � LDX /TITLETB2 I LDA #TITLETB2 I�; �JSR PRNROW1 P�; INC POINT JMP NMIOUT ��; PRENTCHK: �LDA PRINTMK P BNE PRINT LDA PRNTCONT R�TAY �ASL �TAX �; �LDA MSGTAB+1,X T STA PRNTADR+1 N�LDA MSGTAB,X S�STA PRNTADR P�; �INC ROW �TYA �BNE >1 �LDA #PRNSTR #�STA ROW �^1 LDA #PRNSTR1 STA COLUMN ��LDA #$00 STA INDEX LDA #TIME1 � STA COUNT DEC PRINTMK P�INC PRNTCONT R JMP NMIOUT ��; PRINT : DEC COUNT BNE PNTERR � LDA #TIME1 � STA COUNT ; �; JSR SETADR � LDY INDEX LDA (PRNTADR),Y T�BPL >0 �; �INC PRINTMK P�LDY PRNTCONT R�CPY #GAMENO #�BCC >1 INC POINT ; �^0 PHA �JSR INCROCN I�PLA �^1 INC INDEX �AND #$7F STA $2007 ; �PNTERR JMP NMIOUT �; SELECT : �LDA SELECTMK E�BNE SELECT1 S�; �DEC SELECTMK E LDA #TIME3 ��STA KEYCONT K�; �LDY #$03 �^1 LDA CRSTAB,Y STA $200,Y ��DEY �BNE <1 �LDA SELCONT S�ASL �ASL �ASL �CLC ADC CRSTAB�à�à�à
Cleanup > Pages missing date info > Unlicensed NES pages missing date info
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Games > Games by content > Games with uncompiled source code
Games > Games by content > Games with unused graphics
Games > Games by content > Games with unused text
Games > Games by developer > Games developed by Kaiser Electronics
Games > Games by platform
Games > Games by publisher > Games published by Kaiser Electronics
Games > Unlicensed games > Unlicensed NES games
The Cutting Room Floor > Unimportant Awards > NES games