Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Robert

ARCADE 0.185

Recommended Posts

I tried fixing 'START POSITION ERROR!!' message appeared in the bug reported place for now.

  • From the third level, if you die, the game hangs because the restart level is wrong. (MT #00377)
  • Go into the secret hole and die in the cave, you restart in a totally black area and you can't do anything. (MT #00205)

There seems to be some mistakes in cchip mapping.
There may be other parts of the same problem. (I haven't played this game too much :sweaty:)

Here is diff patch for MAME 0.186:

--- src\mame\machine\bonzeadv.cpp	2015-06-04 19:59:32.000000000 +0900
+++ src\mame\machine\bonzeadv.cpp	2017-06-14 18:49:37.000000000 +0900
@@ -65,7 +65,7 @@ static const struct cchip_mapping level0
 	{ 0x0a20, 0x0c80, 0x0000, 0x0100,   0x0a68, 0x0018, 0x0070, 0x0058 },
 	{ 0x0c80, 0x0e00, 0x0000, 0x0100,   0x0c40, 0x0018, 0x0070, 0x0040 },
 
-	{ 0x0380, 0x07c0, 0x0100, 0x0200,   0x0038, 0x0418, 0x0070, 0x00a8 },
+	{ 0x0380, 0x07c0, 0x0100, 0x0200,   0x0438, 0x0018, 0x0070, 0x00a8 },
 	{ 0xff }
 };
 
@@ -97,17 +97,16 @@ static const struct cchip_mapping level0
 	{ 0x06e0, 0x0840, 0x04f4, 0x05f8,   0x0670, 0x0518, 0x0078, 0x0048 },
 	{ 0x0840, 0x0a10, 0x04f4, 0x05f8,   0x07d8, 0x0518, 0x0070, 0x0060 },
 	{ 0x0a10, 0x0b80, 0x04f4, 0x05f8,   0x09e8, 0x0500, 0x0080, 0x0080 },
-	{ 0x0b80, 0x1090, 0x04f4, 0x05f8,   0x0b20, 0x0418, 0x0070, 0x0080 },
 
 	{ 0x0230, 0x03a0, 0x040c, 0x04f4,   0x02e8, 0x04b0, 0x0080, 0x0090 },
-	{ 0x03a0, 0x03b0, 0x040c, 0x04f4,   0x0278, 0x0318, 0x0078, 0x00a8 },
-	{ 0x0520, 0x08e0, 0x040c, 0x04f4,   0x0608, 0x0318, 0x0080, 0x0058 },
-	{ 0x08e0, 0x0a00, 0x040c, 0x04f4,   0x0878, 0x0318, 0x0078, 0x0098 },
+	{ 0x0840, 0x0b80, 0x040c, 0x04f4,   0x0908, 0x0418, 0x0078, 0x0030 },
+	{ 0x0b80, 0x1090, 0x040c, 0x04f4,   0x0b20, 0x0418, 0x0070, 0x0080 },
 
 	{ 0x0230, 0x03b0, 0x02f8, 0x040c,   0x0278, 0x0318, 0x0078, 0x00a8 },
 	{ 0x03b0, 0x0520, 0x02f8, 0x040c,   0x0390, 0x0318, 0x0070, 0x00b8 },
 	{ 0x0520, 0x08e0, 0x02f8, 0x040c,   0x0608, 0x0318, 0x0080, 0x0058 },
-	{ 0x08e0, 0x0a00, 0x02f8, 0x040c,   0x0878, 0x0318, 0x0078, 0x0098 }
+	{ 0x08e0, 0x0a00, 0x02f8, 0x040c,   0x0878, 0x0318, 0x0078, 0x0098 },
+	{ 0xff }
 };
 
 static const struct cchip_mapping level03[] =

EDIT: I'm sorry. This patch I wrote yesterday is not correctly patched because tabs has been replaced by spaces.

So If you saved this yesterday please try again.

Edited by demonkatze
  • Like 1

Share this post


Link to post
Share on other sites

Thanks for work on this demonkatze. I'll test this tomorrow, right now I'm building new groovymame (time to refresh my arcade gaming PC).

 

As always thanks MameSick, Robert and Dink for all work :)

Share this post


Link to post
Share on other sites

After some tests means dying in many places till ice level I didn't encounter any game crash. I'll try today finish game and test alternatives routes in levels.

 

PS. I manually edited source when I realized that I cannot apply diff :)

Edited by haynor666

Share this post


Link to post
Share on other sites

Yep, this looks like a real good job. I'm not familiar with the game but for what I tested by myself ,the two mentioned bugs don't occur anymore. So I vote for inclusion in the next ARCADE release.

Share this post


Link to post
Share on other sites

Ahh, realizing too late. :down:
Thank you for your trouble and testing too, haynor666 and mamesick.

(Really I wanted to attach a file but I didn't know how to do. :oops: )

Share this post


Link to post
Share on other sites

Robert, mameSick is this diff ok for taito_f3? I generated this from taito_f3 taken from arcade source versus offcial 186 source.

 

Notice that - if (cx>=m_clip_al##pf_num && cx<m_clip_ar##pf_num && !(cx>=m_clip_bl##pf_num && cx<m_clip_br##pf_num)) \

+ if (cx>=m_clip_al##pf_num && cx<m_clip_ar##pf_num-1 && !(cx>=m_clip_bl##pf_num && cx<m_clip_br##pf_num)) \

 

is still here

 

diff -Nru src/mame/video/taito_f3.cpp src-fx/mame/video/taito_f3.cpp
--- src/mame/video/taito_f3.cpp	Wed May 31 01:17:25 2017
+++ src-fx/mame/video/taito_f3.cpp	Wed Jun 14 18:35:33 2017
@@ -1388,7 +1388,7 @@
 }
 
 #define UPDATE_PIXMAP_SP(pf_num) \
-	if(cx>=clip_als && cx<clip_ars && !(cx>=clip_bls && cx<clip_brs)) \
+	if(cx>=clip_als && cx<clip_ars-1 && !(cx>=clip_bls && cx<clip_brs)) \
 	{ \
 		sprite_pri=sprite[pf_num]&m_pval; \
 		if(sprite_pri) \
@@ -1404,7 +1404,7 @@
 	}
 
 #define UPDATE_PIXMAP_LP(pf_num) \
-	if (cx>=m_clip_al##pf_num && cx<m_clip_ar##pf_num && !(cx>=m_clip_bl##pf_num && cx<m_clip_br##pf_num)) \
+	if (cx>=m_clip_al##pf_num && cx<m_clip_ar##pf_num-1 && !(cx>=m_clip_bl##pf_num && cx<m_clip_br##pf_num)) \
 	{ \
 		m_tval=*m_tsrc##pf_num; \
 		if(m_tval&0xf0) \
@@ -1924,8 +1924,16 @@
 		_y_zoom[y] = (line_zoom&0xff) << 9;
 
 		/* Evaluate clipping */
-		if (pri&0x0800)
+		/* Notes:
+		   kludge: line-disable breaks quizhuhu text & landmakr "you win / you lose" text. [april 23, 2017 -dink]
+		   somehow I think 0x0800 has nothing to do with line-disable.
+		   although tcobra2 uses this to clip the sides of the playfield
+		*/
+
+		if (pri&0x0800 && m_f3_game != LANDMAKR)
+		{
 			line_enable=0;
+		}
 		else if (pri&0x0330)
 		{
 			//fast path todo - remove line enable
@@ -2070,6 +2078,11 @@
 		else
 			line_enable=1;
 
+		if ((m_f3_game == ARABIANM) && line_enable)
+		{ // force opaque vram & pixel layer kludge: fixes arabianm missing cutscene text, gseeker missing continue screen april.21&28.2017_dink
+			line_enable = 1;
+		}
+
 		line_t->pri[y]=pri;
 
 		/* Evaluate clipping */
@@ -2341,10 +2354,16 @@
 				{
 					if(alpha_type==1)
 					{
-						/* if (m_f3_alpha_level_2as==0   && m_f3_alpha_level_2ad==255)
-						 *     alpha_mode[i]=3; alpha_mode_flag[i] |= 0x80;}
-						 * will display continue screen in gseeker (mt 00026) */
-						if     (m_f3_alpha_level_2as==0   && m_f3_alpha_level_2ad==255) alpha_mode[i]=0;
+						if     (m_f3_alpha_level_2as==0   && m_f3_alpha_level_2ad==255)
+						{
+							if (m_f3_game == GSEEKER) // will display continue screen (MT 00026)
+							{
+								alpha_mode[i] = 3;
+								alpha_mode_flag[i] |= 0x80;
+							}
+							else
+								alpha_mode[i] = 0;
+						}
 						else if(m_f3_alpha_level_2as==255 && m_f3_alpha_level_2ad==0  ) alpha_mode[i]=1;
 					}
 					else if(alpha_type==2)


Edited by haynor666

Share this post


Link to post
Share on other sites

Tested Bonze Adventure till last boss (though I didn't managed beat even first form) and dying in many different places didn't result any crash through 7 levels.

Share this post


Link to post
Share on other sites

After that I also tested till last boss myself (too difficult for me!) but you really helped me by testing it once more.
Thank you so much again! :cat:

Share this post


Link to post
Share on other sites

I wrote this here along the flow of the conversation.

 

Namco NB1 hack also breaks some graphics of Nebulas Ray.

So I modified it a bit.

 

namconb1_state::video_update_common in src/mame/video/namconb1.cpp

// MAMEFX start
            if (m_pos_irq_level != 0 && pri >= 5) // raster interrupt enabled (special priority cases)
            {
                if (pri == 5) c123_tilemap_draw( screen, bitmap, cliprect, pri );
                if (cliprect.max_y == visarea_sprites.max_y) // no raster on sprites?? faster!
                {
                    if (pri != 5) c123_tilemap_draw( screen, bitmap, visarea_sprites, pri );
                    c355_obj_draw(screen, bitmap, visarea_sprites, pri );
                }
            }
            else
            {    
                c123_tilemap_draw( screen, bitmap, cliprect, pri );
                c355_obj_draw(screen, bitmap, cliprect, pri );
            }
// MAMEFX end
I tested Nebulas Ray and some other games and it's probably okay.

 

 

And it isn't related to above hack

 

TIMER_DEVICE_CALLBACK_MEMBER(namconb1_state::scantimer) in src/mame/drivers/namconb1.cpp

m_screen->update_partial(posirq_scanline);
Change to
m_screen->update_partial(posirq_scanline - 1);
This fixes stage 5 warp effect of Nebulas Ray. (You can also see it in attract demo)

 

 

P.S. Sorry about my Google-translated lousy English :oops:

 

This has been added to the source. Thanks!

Share this post


Link to post
Share on other sites

I tried fixing 'START POSITION ERROR!!' message appeared in the bug reported place for now.

  • From the third level, if you die, the game hangs because the restart level is wrong. (MT #00377)
  • Go into the secret hole and die in the cave, you restart in a totally black area and you can't do anything. (MT #00205)
There seems to be some mistakes in cchip mapping.

There may be other parts of the same problem. (I haven't played this game too much :sweaty:)

 

Here is diff patch for MAME 0.186:

--- src\mame\machine\bonzeadv.cpp	2015-06-04 19:59:32.000000000 +0900
+++ src\mame\machine\bonzeadv.cpp	2017-06-14 18:49:37.000000000 +0900
@@ -65,7 +65,7 @@ static const struct cchip_mapping level0
 	{ 0x0a20, 0x0c80, 0x0000, 0x0100,   0x0a68, 0x0018, 0x0070, 0x0058 },
 	{ 0x0c80, 0x0e00, 0x0000, 0x0100,   0x0c40, 0x0018, 0x0070, 0x0040 },
 
-	{ 0x0380, 0x07c0, 0x0100, 0x0200,   0x0038, 0x0418, 0x0070, 0x00a8 },
+	{ 0x0380, 0x07c0, 0x0100, 0x0200,   0x0438, 0x0018, 0x0070, 0x00a8 },
 	{ 0xff }
 };
 
@@ -97,17 +97,16 @@ static const struct cchip_mapping level0
 	{ 0x06e0, 0x0840, 0x04f4, 0x05f8,   0x0670, 0x0518, 0x0078, 0x0048 },
 	{ 0x0840, 0x0a10, 0x04f4, 0x05f8,   0x07d8, 0x0518, 0x0070, 0x0060 },
 	{ 0x0a10, 0x0b80, 0x04f4, 0x05f8,   0x09e8, 0x0500, 0x0080, 0x0080 },
-	{ 0x0b80, 0x1090, 0x04f4, 0x05f8,   0x0b20, 0x0418, 0x0070, 0x0080 },
 
 	{ 0x0230, 0x03a0, 0x040c, 0x04f4,   0x02e8, 0x04b0, 0x0080, 0x0090 },
-	{ 0x03a0, 0x03b0, 0x040c, 0x04f4,   0x0278, 0x0318, 0x0078, 0x00a8 },
-	{ 0x0520, 0x08e0, 0x040c, 0x04f4,   0x0608, 0x0318, 0x0080, 0x0058 },
-	{ 0x08e0, 0x0a00, 0x040c, 0x04f4,   0x0878, 0x0318, 0x0078, 0x0098 },
+	{ 0x0840, 0x0b80, 0x040c, 0x04f4,   0x0908, 0x0418, 0x0078, 0x0030 },
+	{ 0x0b80, 0x1090, 0x040c, 0x04f4,   0x0b20, 0x0418, 0x0070, 0x0080 },
 
 	{ 0x0230, 0x03b0, 0x02f8, 0x040c,   0x0278, 0x0318, 0x0078, 0x00a8 },
 	{ 0x03b0, 0x0520, 0x02f8, 0x040c,   0x0390, 0x0318, 0x0070, 0x00b8 },
 	{ 0x0520, 0x08e0, 0x02f8, 0x040c,   0x0608, 0x0318, 0x0080, 0x0058 },
-	{ 0x08e0, 0x0a00, 0x02f8, 0x040c,   0x0878, 0x0318, 0x0078, 0x0098 }
+	{ 0x08e0, 0x0a00, 0x02f8, 0x040c,   0x0878, 0x0318, 0x0078, 0x0098 },
+	{ 0xff }
 };
 
 static const struct cchip_mapping level03[] =

EDIT: I'm sorry. This patch I wrote yesterday is not correctly patched because tabs has been replaced by spaces.

So If you saved this yesterday please try again.

 

This has been added to the source. Thanks again!

 

I hand-typed it in, so you might want to check that I did it properly.

Share this post


Link to post
Share on other sites

Robert, mameSick is this diff ok for taito_f3? I generated this from taito_f3 taken from arcade source versus offcial 186 source.

 

Notice that - if (cx>=m_clip_al##pf_num && cx=m_clip_bl##pf_num && cx

+ if (cx>=m_clip_al##pf_num && cx=m_clip_bl##pf_num && cx

 

is still here

Can some people test this out? I am totally hopeless at most games.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...