Please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Pokémon 4 in 1

From The Cutting Room Floor
Jump to: navigation, search

Title Screen

Pokémon 4 in 1

Also known as: Piká 4 in 1 (Box)
Developer: Union Bond
Publisher: YanCheng
Platform: Unlicensed NES
Released internationally: 2000


SourceIcon.png This game has uncompiled source code.
MusicIcon.png This game has unused music.
Carts.png This game has revisional differences.


Pokémon 4 in 1 is a multicart that contains 4 games, all of which feature Pikachu.

Unused Music

Picaslot

The song used for the intro and title screen in most Union Bond RPGs is present in Picaslot's music data. Enable FCEUX cheat 000B:03 before selecting Picaslot on the menu to hear it in-game.

Revisional Differences

Pet 4 in 1

An alternate, Pikachu-free version exists simply called Pet 4-in-1. The menu replaces Pikachu with a bear and the graphics for Pet Slot were changed, although any other Pikachu sprites are very lazy edits. The graphics for the Union Bond screen have been deleted.

Pet Slot and Pet Dance were included separately on the Power Joy Supermax 30-in-1, but it's unknown whether the multicart was ever released in full. However, it can be accessed on the 30-in-1 by pressing B on Pet Dance's title screen.

Pet 4-in-1 (Unl)-1.png Pet 4-in-1 (Unl)-2.png

Funclick

Another hack of Picaclick, although this is separated from the other games. Pikachu is replaced with a remaked version of the Haribo kid, but it's otherwise the same.

FunclickTitle.png

Assembler Output

At 0x39812 in the ROM is a pretty large chunk of assembler output.

  Thu Nov  3 1994 12:59                                                                                                  Page    1







               2500 A.D. 6502 Macro Assembler  -  Version 4.01a
               ------------------------------------------------

                       Input  Filename : MOL00.asm
                       Output Filename : MOL00.obj


    1                      	
    2   0000               	        INCLUDE MOL.KEY
    3                      	
    4                      	;------- Singlekey ----------------
    5          0001        	RIGHTKEY                EQU     01H
    6          0002        	LEFTKEY                 EQU     02H
    7          0004        	DOWNKEY                 EQU     04H
    8          0008        	UPKEY                   EQU     08H
    9          0010        	STARTKEY                EQU     10H
   10          0020        	SELECTKEY               EQU     20H
   11          0080        	AKEY                    EQU     80H
   12          0040        	BKEY                    EQU     40H
   13                      	;------- Doublekey ----------------
   14          0088        	AUPKEY                  EQU     88H
   15          0044        	BDOWNKEY                EQU     44H
   16          0030        	SELECTSTARTKEY          EQU     30H
   17          00C0        	ABKEY                   EQU     C0H
   18          000C        	UPDOWNKEY               EQU     0CH
   19          0081        	ARIGHTKEY               EQU     81H
   20          0042        	BLEFTKEY                EQU     42H
   21                      	;-------------- DEFULT -------------------
   22                      	;_0KEY                   EQU   SELECTKEY
   23                      	;_1KEY                   EQU   STARTKEY
   24                      	;_2KEY                   EQU   AKEY
   25                      	;_3KEY                   EQU   UPKEY
   26                      	;_4KEY                   EQU   BKEY
   27                      	;_5KEY                   EQU   LEFTKEY
   28                      	;_6KEY                   EQU   RIGHTKEY
   29                      	;_7KEY                   EQU   AUPKEY
   30                      	;_8KEY                   EQU   DOWNKEY
   31                      	;_9KEY                   EQU   BDOWNKEY
   32                      	;-------------- YOUR DEFINE ----------------------
   33                      	;_0KEY EQU BKEY
   34                      	;_1KEY EQU UPKEY
   35                      	;_2KEY EQU AKEY
   36                      	;_3KEY EQU LEFTKEY
   37                      	;_4KEY EQU ABKEY
   38                      	;_5KEY EQU RIGHTKEY
   39                      	;_6KEY EQU SELECTKEY
   40                      	;_7KEY EQU DOWNKEY
   41                      	;_8KEY EQU STARTKEY
   42                      	;_9KEY EQU SELECTSTARTKEY
   43                      	
   44                      	;_0KEY EQU AKEY
   45                      	;_1KEY EQU DOWNKEY
   46                      	;_2KEY EQU BKEY
   47                      	;_3KEY EQU RIGHTKEY
  Thu Nov  3 1994 12:59                                                                                                  Page    2




   48                      	;_4KEY EQU ABKEY
   49                      	;_5KEY EQU LEFTKEY
   50                      	;_6KEY EQU STARTKEY
   51                      	;_7KEY EQU UPKEY
   52                      	;_8KEY EQU SELECTKEY
   53                      	;_9KEY EQU SELECTSTARTKEY
   54                      	
   55          0080        	_0KEY EQU AKEY
   56          0004        	_1KEY EQU DOWNKEY
   57          0040        	_2KEY EQU BKEY
   58          0001        	_3KEY EQU RIGHTKEY
   59          0002        	_4KEY EQU LEFTKEY
   60          0010        	_5KEY EQU STARTKEY
   61          0008        	_6KEY EQU UPKEY
   62          0020        	_7KEY EQU SELECTKEY
   63                      	
   64                      	
   65                      	
   66                      	;_6KEY EQU BKEY
   67                      	;_1KEY EQU UPKEY
   68                      	;_2KEY EQU AKEY
   69                      	;_3KEY EQU LEFTKEY
   70                      	;_4KEY EQU UPDOWNKEY
   71                      	;_5KEY EQU RIGHTKEY
   72                      	;_0KEY EQU BLEFTKEY
   73                      	;_7KEY EQU DOWNKEY
   74                      	;_8KEY EQU ARIGHTKEY
   75                      	;
   76                      	
   77                      	
   78   0000               	        INCLUDE MOL.VAR
   79                      	
   80          0000        	NYJSTARTPGTBANK EQU     0
   81                      	;====== ADDRESS MAPS ============================================
   82   0000               	        ORG     0000H
   83                      	        SYMBOLS
   84                      	
   85                      	;*********************************************************************
   86                      	;                    .SYMBOLS
   87                      	;*********************************************************************
   88                      	;                    .PAGE0
   89                      	;==================================================================
   90   0000               	BANK_NO         DS      1
   91   0001               	GAME_NO         DS      1
   92                      	;================================================================
   93                      	;-------------------------------------
   94                      	;------------------------------------
   95                      	
   96                      	;*********************   Music and sound *****************************
   97                      	;madr            EQU     4CH     ; 0000H,0001H
   98                      	;madrt           EQU     4EH     ; 0002H,0003H
   99                      	;madr1           EQU     50H     ; 0004H,0005H
  100                      	
  101                      	;tmp_lo          EQU     52H
  102                      	;tmp_hi          EQU     53H
  103                      	;bgm_flg         EQU     54H
  104                      	;bgm_no          EQU     55H
  Thu Nov  3 1994 12:59                                                                                                  Page    3




  105                      	;ibgm_flg        EQU     56H
  106                      	;snd1_flg        EQU     57H
  107                      	;snd1_type       EQU     58H
  108                      	;snd2_flg        EQU     59H
  109                      	;snd2_type       EQU     5AH
  110                      	;snd_type        EQU     5BH
  111                      	;jmp00_no        EQU     5CH
  112                      	;*********************
  113                      	;*********************
  114                      	;        ORG     005DH
  115                      	;;;WaitingBuffer:UseInAllSub;;;
  116          00E0        	NMI_addr0       EQU     E0H ;jmp00_no+1 ;DS 2
  117                      	;addr0           EQU     E2H     ;DS 2
  118          00E4        	addr1           EQU     E4H     ;DS 2
  119          00E6        	addr2           EQU     E6H     ;DS 2
  120          00E8        	addr3           EQU     E8H     ;DS 2
  121          00EA        	addr4           EQU     EAH     ;DS 2
  122          00EC        	addr            EQU     ECH     ;DS 2
  123                      	;-------------------------------------
  124          00EE        	temp_lo         EQU     EEH     ;DS 1
  125          00EF        	temp_hi         EQU     EFH     ;DS 1
  126          00F0        	addr_lo         EQU     F0H     ;DS 1
  127          00F1        	addr_hi         EQU     F1H     ;DS 1
  128                      	
  129          00F2        	Xaddr           EQU     F2H     ;DS 1
  130          00F3        	Yaddr           EQU     F3H     ;DS 1
  131                      	;================================================================
  132   0100               	                ORG     0100H
  133                      	
  134   0100               	molrecflg       DS      4 ;=$12$34$56$78 HasRecords!DoNotClear!!!
  135   0104               	BLOCK_REC       DS 2 ;EQU     molrecbuf+3
  136                      	
  137                      	;================================================================
  138                      	
  139   0200               	                ORG     0200H
  140                      	
  141                      	;================================================================
  142                      	
  143   0300               	                ORG     0300H
  144                      	
  145                      	;================================================================
  146   0300               	transvramidx    DS      1 ;
  147   0301               	transvramflg    DS      1 ;=0:NoTrans =1:DoTrans||Translating
  148   0302               	transvrambuf    DS      1+128
  149                      	;+0:d0-d6需传送的数据段数(小于等于16段)
  150                      	;+1:d0-d6:数据长度 d7=0:横向传送;d7=1:纵向传送)
  151                      	;+2+3:需传送的数据首地址(PPUaddr)+2:Hi +3:Lo
  152                      	;+ ... 数据内容
  153                      	;+ ... +1:d0-d6:数据长度 d7=0:横向传送;d7=1:纵向传送)
  154                      	; ... +2+3:需传送的下一段数据首地址(PPUaddr)
  155                      	;+ ... 下一段数据内容
  156                      	;       Etc.
  157                      	;----------------------------------------------------------------
  158   0383               	blk_fall_flg    ds      1
  159                      	;=0:trans scr
  160                      	;=1:trans color area
  161   0384               	same_fall_flg   ds      1
  Thu Nov  3 1994 12:59                                                                                                  Page    4




  162                      	;=0:trans scr
  163                      	;=1:trans color area
  164                      	;------- IO PORTS REGISTERS & SYSTEM CONTROLERS -----------------
  165   0385               	rg_2000H        DS      1       ;NMI controler(D7)
  166                      	                                ;SPRITE mode(D5)
  167                      	                                ;TEXT/SPRITE LIB switch(D3-D4)
  168                      	                                ;VRAM vertical/horizon(D2)
  169                      	                                ;PAGE displaying(D0-D1)
  170   0386               	rg_2001H        DS      1       ;SCR_CONTROLER
  171                      	                                ;TEXT DISPLAY ENABLE(D3)
  172                      	                                ;SPRITE DISPLAY ENABLE(D4)
  173   0387               	rg_2002H        DS      1
  174   0388               	rg_2003H        DS      1
  175   0389               	rg_2004H        DS      1
  176   038A               	TVx             DS      1       ;X posi. of backgnd on screen($2005 1st)
  177   038B               	TVy             DS      1       ;Y posi. of backgnd on screen($2005 2nd)
  178                      	;-------------------------
  179   038C               	leftlimit       DS      1
  180   038D               	rightlimit      DS      1
  181   038E               	uplimit         DS      1
  182   038F               	downlimit       DS      1
  183          0008        	LEFTLIMIT       EQU     8
  184          00F8        	RIGHTLIMIT      EQU     248
  185          0008        	UPLIMIT         EQU     8
  186          00F0        	DOWNLIMIT       EQU     240
  187                      	;-------------------------
  188   0390               	COUNT           DS      1
  189   0391               	BTEMP           DS      1
  190   0392               	JSTATUS1        DS      1
  191   0393               	JSTATUS2        DS      1
  192   0394               	TOGGLE1         DS      1
  193   0395               	TOGGLE2         DS      1
  194   0396               	LAST_JOY1       DS      1
  195   0397               	LAST_JOY2       DS      1
  196   0398               	TOGGLE          DS      1 ;TOGGLE=TOGGLE1||TOGGLE2
  197                      	
  198   0399               	toggle_buf      DS      1
  199                      	;-------------------------
  200   039A               	key_buff0       DS      1
  201                      	;=0:Enable'AKEY'
  202   039B               	key_buff1       DS      1
  203                      	;=0:Enable'LEFTKEY' & 'RIGHTKEY' &'UPKEY' & 'DOWNKEY'
  204                      	;--+--+--+--+--+--+--+--+--
  205                      	;;******************** Music & sound  *********************************
  206                      	;; The following variables must in this order
  207                      	;chnl                DS        1
  208                      	;tp                  DS        1
  209                      	;tempo               DS        1
  210                      	;keyshf              DS        4         ; Key shift
  211                      	;work                DS        1
  212                      	;workx               DS        1
  213                      	;ovride              DS        1
  214                      	;mvol1               DS        4         ; Master volume for channel 1,2,4 add
  215                      	;var1                DS        4         ; or substract VAR per nmi in ADR mode
  216                      	;tmp1                DS        4         ; mi count for each note
  217                      	;madrl               DS        4         ; Score index during playing
  218                      	;madrh               DS        4
  Thu Nov  3 1994 12:59                                                                                                  Page    5




  219                      	;mod1                DS        4         ; Envelope mode: 1 = A, 2 = D,
  220                      	;env1            DS      4
  221                      	;sld1            DS      4
  222                      	;vol1            DS      4
  223                      	;atk1            DS      4
  224                      	;dcy1            DS      4
  225                      	;sus1            DS      4
  226                      	;rel1            DS      4
  227                      	;vols1           DS      4       ; Sustain volume
  228                      	;ctr1            DS      4       ; Working counter for each ADSR mode
  229                      	;seqcl           DS      4       ; Sequence countro1 for jump command
  230                      	;seqch           DS      4
  231                      	;; The above variables must in this order
  232                      	;bgm_tmp         DS      120     ; BGM temperary buffer for BGM
  233                      	;bgm_sef         DS      1       ; Insert BGM flag, must be initialized 0
  234                      	;tr1             DS      1
  235                      	;tr2             DS      1
  236                      	;-------MUSIC END---------------------------------------------------
  237   039C               	game_flg        DS      1
  238                      	;InitFlag
  239   039D               	game_over       DS      1
  240                      	;=0:ContinueGame
  241                      	;=1:GameOver(NoBlockConnected)
  242                      	;------------------------
  243   039E               	game            DS      1
  244                      	;=0:PKQ Click
  245                      	;=1:PAC
  246                      	;=2:ELS
  247                      	;=3:...
  248                      	;------------------------
  249   039F               	area_x          DS      1 ;X0,Y0 of GameArea(16Pixel)
  250   03A0               	area_y          DS      1
  251   03A1               	area_x_size     DS      1 ;Length&Width of GameArea(16Pixel)
  252   03A2               	area_y_size     DS      1
  253                      	;------------------------
  254   03A3               	fall_flg        DS      1
  255                      	;=00H:Needn'tFallDown
  256                      	;=XXH:NeedFallDown
  257                      	;------------------------
  258                      	;以下变量用于初始化:
  259   03A4               	max_element_num DS      1
  260                      	;初始化中可消除区域允许包含的最大元素个数
  261   03A5               	max_aarea_num   DS      1
  262                      	;初始化中可消除区域最大个数
  263                      	;------- ProcSameBlocksVars -----
  264                      	;----- 全局变量 ---------
  265   03A6               	same_blk_num    DS      1
  266   03A7               	same_blk_no     DS      1
  267   03A8               	same_blk_x0     DS      1
  268   03A9               	same_blk_x1     DS      1
  269   03AA               	same_blk_y0     DS      1
  270   03AB               	same_blk_y1     DS      1
  271                      	;----- 显示变量 ---------
  272   03AC               	same_blk_roll_now       DS      1
  273                      	;为节约时间,每个主循环只处理一行!
  274                      	;以same_blk_roll_now作INDEX
  275   03AD               	same_blk_frm    DS      8
  Thu Nov  3 1994 12:59                                                                                                  Page    6




  276          0002        	BLK_ROLL_TIME   EQU     2
  277                      	;ActiveBlockRollSpeed
  278   03B5               	same_blk_time   DS      8
  279                      	;------------------------
  280   03BD               	top             DS      2 ;top score
  281   03BF               	total           DS      2
  282   03C1               	point           DS      2
  283                      	;------------------------
  284   03C3               	curmovflg       DS      1
  285                      	;=0:NotMoved
  286                      	;>=1:Moved
  287                      	;------------------------
  288   03C4               	blk_0_no        DS      8
  289                      	;UsedInInit
  290                      	;------------------------
  291   03CC               	blk_no          DS      1 ;=x*y
  292                      	;------------------------
  293   03CD               	old_blk_x_no    DS      1
  294   03CE               	old_blk_y_no    DS      1
  295                      	;------------------------
  296   03CF               	blk_x_no        DS      1
  297   03D0               	blk_y_no        DS      1
  298                      	;=FFH:OutOfBlockRange
  299   03D1               	blk_x_num       DS      1
  300   03D2               	blk_y_num       DS      1
  301   03D3               	blk_buff        DS      256
  302                      	;------------------------
  303                      	;D0D1D2D3=0000B Backgnd(or:FalenDownOK!)
  304                      	;D0D1D2D3=0001B-0011B:4SortsBlock
  305                      	;D0D1D2D3=1111B:BlockBeDestroy(ToBeFallDownNow!)
  306                      	;------------------------
  307   04D3               	blk_refresh     DS      1
  308                      	;=0:NeedNotRefresh
  309                      	;!=0:NeedRefresh
  310                      	;===============================================
  311                      	
  312          0010        	FRMBUFLENGTH    EQU     16
  313   04D4               	FRAME_BUF       DS      64
  314                      	;       16*4:4SpritesAltogether!
  315                      	;+0:d0d1d2d3d4d5d6:ActionNo
  316                      	;   d7:=0NotInited/=1Inited
  317                      	;   =ffh:NoActionToShow!
  318                      	;+1:FrameNo
  319                      	;+2:FrameKeepTime(V_Blanking)
  320                      	;+3+4:X PosiLo & PosiHi 256个点进位
  321                      	;+5+6:Y PosiLo & PosiHi 256个点进位
  322                      	;VarsBelowOnlyUseBy"ShortRun"And"LongRun"
  323                      	;+7: X-Offset ;d7=0:x++ d7=1:x--
  324                      	;+8: Y-Offset ;d7=0:y++ d7=1:y--
  325                      	;+9: 本分镜持续时间V-Blanking number
  326                      	;       =0:保持本分镜=other:持续时间
  327                      	;+A:(AddIn'FuZhou') WhichSpriteNo?(Of'SPRITE_INDEX')
  328                      	;+B:Last "FRAME_BUF"
  329                      	;-------
  330                      	;run_x           DS      2 ;Virtual"TVx"
  331                      	;run_y           DS      2 ;Virtual"TVy"
  332                      	;-------------------------
  Thu Nov  3 1994 12:59                                                                                                  Page    7




  333   0514               	ACTION_BUF0     DS      2
  334   0516               	ACTION_BUF1     DS      2
  335                      	;-------------------------
  336   0518               	PPU_BANK        DS      6
  337                      	;------- CulculateVars ---------------------------------------------
  338   051E               	cul_buffer      ds      10
  339   0528               	hex_buffer      ds      4
  340   052C               	dec_buffer      ds      10
  341   0536               	oper_buf0       ds      4
  342   053A               	oper_buf1       ds      4
  343                      	;-------------------------------------------------------------------
  344   053E               	minute0         DS      1
  345   053F               	second0         DS      1
  346   0540               	minisec0        DS      1
  347   0541               	minute1         DS      1
  348   0542               	second1         DS      1
  349   0543               	minisec1        DS      1
  350   0544               	_1NMI           DS      1
  351                      	;;-----------------------
  352   0545               	x_ofset         ds      1
  353   0546               	y_ofset         ds      1
  354                      	;-------------------------
  355   0547               	yaboyflg        DS      1 ;=0:Not'Yaboy'Title
  356                      	 ;=1,3,5,7:Init'Yaboy'Title
  357                      	 ;=2,4,6,8:Running'Yaboy'Title
  358   0548               	yaboyno         DS      1 ;
  359   0549               	yaboybuf        DS      1 ;
  360                      	;-------------------------
  361   054A               	color_area      DS      64
  362                      	;================================================================
  363                      	;MOVED FROM PAGE 0
  364   058A               	x_rg                    DS      2
  365   058C               	y_rg                    DS      2
  366   058E               	counter                 DS      1
  367   058F               	screenflag              DS      1
  368   0590               	window                  DS      1
  369   0591               	Xposition               DS      1
  370   0592               	Yposition               DS      1
  371   0593               	asciidata               DS      1
  372   0594               	length                  DS      1
  373   0595               	Xlength                 DS      1
  374   0596               	Ylength                 DS      1
  375   0597               	a_rg                    DS      1
  376   0598               	x_size                  DS      1
  377   0599               	y_size                  DS      1
  378   059A               	souce_prog_old7         DS      1
  379   059B               	souce_prog_id6          DS      1
  380   059C               	souce_prog_id7          DS      1
  381   059D               	NOENEMY                 DS      1
  382                      	                        ;=0:CanDead
  383                      	                        ;=1:NoEnemy
  384                      	;------------------------------------
  385   059E               	souce_data_id   DS 1
  386   059F               	dest_data_id    DS 1
  387                      	;-------------------
  388   05A0               	x_count         DS 1
  389   05A1               	y_count         DS 1
  Thu Nov  3 1994 12:59                                                                                                  Page    8




  390                      	
  391   05A2               	counter0        DS 1
  392   05A3               	counter1        DS 1
  393   05A4               	counter2        DS 1
  394   05A5               	counter3        DS 1
  395                      	;-------------------
  396   05A6               	buffer0         DS 1
  397   05A7               	buffer1         DS 1
  398   05A8               	buffer2         DS 1
  399   05A9               	buffer3         DS 1
  400   05AA               	buffer4         DS 1
  401   05AB               	buffer5         DS 1
  402   05AC               	buffer6         DS 1
  403   05AD               	buffer7         DS 1
  404          05A6        	buffer:         EQU     buffer0 ;DS 1
  405   05AE               	NMIWAITFLG      DS 1
  406   05AF               	NMIWAITBUF      DS 1
  407                      	
  408   05B0               	NMI_a_rg        DS 1
  409   05B1               	NMI_length      DS 1
  410   05B2               	x_posi          DS 2
  411   05B4               	y_posi          DS 2
  412   05B6               	A_buffer        DS 1
  413   05B7               	X_buffer        DS 1
  414   05B8               	Y_buffer        DS 1
  415   05B9               	x_old           DS 1
  416   05BA               	y_old           DS 1
  417   05BB               	x_buff          DS 1
  418   05BC               	y_buff          DS 1
  419                      	;---------------
  420   05BD               	NMI_BUF         DS 1
  421                      	;---------------
  422   05BE               	sound_no        ds 1 ;donotchange!!!
  423                      	;---------------
  424   05BF               	SPRFRS_FLG      DS 1
  425                      	;=SPRITEFRASH_E:EnableSpriteDMA
  426                      	;=SPRITEFRASH_F:ForbidSpriteDMA
  427          0088        	SPRITEFRASH_E   EQU     88H
  428          00EE        	SPRITEFRASH_F   EQU