Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] The Last Blade 2 - Neo Geo CDZ - The game hangs after the first loading screen #11706

Closed
Immersion95 opened this issue Nov 5, 2023 · 17 comments · Fixed by #11713
Closed

Comments

@Immersion95
Copy link

Immersion95 commented Nov 5, 2023

MAME version

0.260

System information

Windows 11 23H2 - Intel UHD 730

INI configuration details

#
# CORE CONFIGURATION OPTIONS
#
readconfig                1
writeconfig               0

#
# CORE SEARCH PATH OPTIONS
#
homepath                  .
rompath                   roms
hashpath                  hash
samplepath                samples
artpath                   artwork
ctrlrpath                 ctrlr
inipath                   .;ini;ini/presets
fontpath                  .
cheatpath                 cheat
crosshairpath             crosshair
pluginspath               plugins
languagepath              language
swpath                    software

#
# CORE OUTPUT DIRECTORY OPTIONS
#
cfg_directory             cfg
nvram_directory           nvram
input_directory           inp
state_directory           sta
snapshot_directory        snap
diff_directory            diff
comment_directory         comments
share_directory           share

#
# CORE STATE/PLAYBACK OPTIONS
#
state                     
autosave                  0
rewind                    0
rewind_capacity           100
playback                  
record                    
exit_after_playback       0
mngwrite                  
aviwrite                  
wavwrite                  
snapname                  %g/%i
snapsize                  auto
snapview                  auto
snapbilinear              1
statename                 %g
burnin                    0

#
# CORE PERFORMANCE OPTIONS
#
autoframeskip             0
frameskip                 0
seconds_to_run            0
throttle                  1
sleep                     1
speed                     1.0
refreshspeed              0
lowlatency                0

#
# CORE RENDER OPTIONS
#
keepaspect                1
unevenstretch             1
unevenstretchx            0
unevenstretchy            0
autostretchxy             0
intoverscan               0
intscalex                 0
intscaley                 0

#
# CORE ROTATION OPTIONS
#
rotate                    1
ror                       0
rol                       0
autoror                   0
autorol                   0
flipx                     0
flipy                     0

#
# CORE ARTWORK OPTIONS
#
artwork_crop              0
fallback_artwork          
override_artwork          

#
# CORE SCREEN OPTIONS
#
brightness                1.0
contrast                  1.0
gamma                     1.0
pause_brightness          0.65
effect                    none

#
# CORE VECTOR OPTIONS
#
beam_width_min            1.0
beam_width_max            1.0
beam_dot_size             1.0
beam_intensity_weight     0
flicker                   0

#
# CORE SOUND OPTIONS
#
samplerate                48000
samples                   1
volume                    0
compressor                1
speaker_report            0

#
# CORE INPUT OPTIONS
#
coin_lockout              1
ctrlr                     
mouse                     0
joystick                  1
lightgun                  0
multikeyboard             0
multimouse                0
steadykey                 0
ui_active                 0
offscreen_reload          0
joystick_map              auto
joystick_deadzone         0.15
joystick_saturation       0.85
joystick_threshold        0.3
natural                   0
joystick_contradictory    0
coin_impulse              0

#
# CORE INPUT AUTOMATIC ENABLE OPTIONS
#
paddle_device             keyboard
adstick_device            keyboard
pedal_device              keyboard
dial_device               keyboard
trackball_device          keyboard
lightgun_device           keyboard
positional_device         keyboard
mouse_device              mouse

#
# CORE DEBUGGING OPTIONS
#
verbose                   0
log                       0
oslog                     0
debug                     0
update_in_pause           0
debugscript               
debuglog                  0

#
# CORE COMM OPTIONS
#
comm_localhost            0.0.0.0
comm_localport            15112
comm_remotehost           127.0.0.1
comm_remoteport           15112
comm_framesync            0

#
# CORE MISC OPTIONS
#
drc                       1
drc_use_c                 0
drc_log_uml               0
drc_log_native            0
bios                      
cheat                     0
skip_gameinfo             0
uifont                    default
ui                        cabinet
ramsize                   
confirm_quit              0
ui_mouse                  1
language                  
nvram_save                1

#
# SCRIPTING OPTIONS
#
autoboot_command          
autoboot_delay            0
autoboot_script           
console                   0
plugins                   1
plugin                    
noplugin                  

#
# HTTP SERVER OPTIONS
#
http                      0
http_port                 8080
http_root                 web

#
# OSD INPUT MAPPING OPTIONS
#
uimodekey                 auto
controller_map            none
background_input          0

#
# OSD FONT OPTIONS
#
uifontprovider            auto

#
# OSD OUTPUT OPTIONS
#
output                    auto

#
# OSD INPUT OPTIONS
#
keyboardprovider          auto
mouseprovider             auto
lightgunprovider          auto
joystickprovider          auto

#
# OSD DEBUGGING OPTIONS
#
debugger                  auto
debugger_port             23946
debugger_font             auto
debugger_font_size        0
watchdog                  0

#
# OSD PERFORMANCE OPTIONS
#
numprocessors             auto
bench                     0

#
# OSD VIDEO OPTIONS
#
video                     auto
numscreens                1
window                    0
maximize                  1
waitvsync                 0
syncrefresh               0
monitorprovider           auto

#
# OSD PER-WINDOW VIDEO OPTIONS
#
screen                    auto
aspect                    auto
resolution                auto
view                      auto
screen0                   auto
aspect0                   auto
resolution0               auto
view0                     auto
screen1                   auto
aspect1                   auto
resolution1               auto
view1                     auto
screen2                   auto
aspect2                   auto
resolution2               auto
view2                     auto
screen3                   auto
aspect3                   auto
resolution3               auto
view3                     auto

#
# OSD FULL SCREEN OPTIONS
#
switchres                 0

#
# OSD ACCELERATED VIDEO OPTIONS
#
filter                    0
prescale                  1

#
# OpenGL-SPECIFIC OPTIONS
#
gl_forcepow2texture       0
gl_notexturerect          0
gl_vbo                    1
gl_pbo                    1
gl_glsl                   0
gl_glsl_filter            1
glsl_shader_mame0         none
glsl_shader_mame1         none
glsl_shader_mame2         none
glsl_shader_mame3         none
glsl_shader_mame4         none
glsl_shader_mame5         none
glsl_shader_mame6         none
glsl_shader_mame7         none
glsl_shader_mame8         none
glsl_shader_mame9         none
glsl_shader_screen0       none
glsl_shader_screen1       none
glsl_shader_screen2       none
glsl_shader_screen3       none
glsl_shader_screen4       none
glsl_shader_screen5       none
glsl_shader_screen6       none
glsl_shader_screen7       none
glsl_shader_screen8       none
glsl_shader_screen9       none

#
# OSD SOUND OPTIONS
#
sound                     auto
audio_latency             2

#
# PORTAUDIO OPTIONS
#
pa_api                    none
pa_device                 none
pa_latency                0

#
# OSD MIDI OPTIONS
#
midiprovider              auto

#
# OSD EMULATED NETWORKING OPTIONS
#
networkprovider           auto

#
# BGFX POST-PROCESSING OPTIONS
#
bgfx_path                 bgfx
bgfx_backend              auto
bgfx_debug                0
bgfx_screen_chains        
bgfx_shadow_mask          slot-mask.png
bgfx_lut                  lut-default.png
bgfx_avi_name             auto

#
# WINDOWS PERFORMANCE OPTIONS
#
priority                  0
profile                   0

#
# WINDOWS VIDEO OPTIONS
#
attach_window             

#
# DIRECT3D POST-PROCESSING OPTIONS
#
hlslpath                  hlsl
hlsl_enable               0
hlsl_oversampling         0
hlsl_write                auto
hlsl_snap_width           2048
hlsl_snap_height          1536
shadow_mask_tile_mode     0
shadow_mask_alpha         0.0
shadow_mask_texture       shadow-mask.png
shadow_mask_x_count       6
shadow_mask_y_count       4
shadow_mask_usize         0.1875
shadow_mask_vsize         0.25
shadow_mask_uoffset       0.0
shadow_mask_voffset       0.0
distortion                0.0
cubic_distortion          0.0
distort_corner            0.0
round_corner              0.0
smooth_border             0.0
reflection                0.0
vignetting                0.0
scanline_alpha            0.0
scanline_size             1.0
scanline_height           1.0
scanline_variation        1.0
scanline_bright_scale     1.0
scanline_bright_offset    0.0
scanline_jitter           0.0
hum_bar_alpha             0.0
defocus                   0.0,0.0
converge_x                0.0,0.0,0.0
converge_y                0.0,0.0,0.0
radial_converge_x         0.0,0.0,0.0
radial_converge_y         0.0,0.0,0.0
red_ratio                 1.0,0.0,0.0
grn_ratio                 0.0,1.0,0.0
blu_ratio                 0.0,0.0,1.0
saturation                1.0
offset                    0.0,0.0,0.0
scale                     1.0,1.0,1.0
power                     1.0,1.0,1.0
floor                     0.0,0.0,0.0
phosphor_life             0.0,0.0,0.0
chroma_mode               3
chroma_conversion_gain    0.299,0.587,0.114
chroma_a                  0.64,0.33
chroma_b                  0.30,0.60
chroma_c                  0.15,0.06
chroma_y_gain             0.2126,0.7152,0.0722

#
# NTSC POST-PROCESSING OPTIONS
#
yiq_enable                0
yiq_jitter                0.0
yiq_cc                    3.57954545
yiq_a                     0.5
yiq_b                     0.5
yiq_o                     0.0
yiq_p                     1.0
yiq_n                     1.0
yiq_y                     6.0
yiq_i                     1.2
yiq_q                     0.6
yiq_scan_time             52.6
yiq_phase_count           2

#
# VECTOR POST-PROCESSING OPTIONS
#
vector_beam_smooth        0.0
vector_length_scale       0.5
vector_length_ratio       0.5

#
# BLOOM POST-PROCESSING OPTIONS
#
bloom_blend_mode          0
bloom_scale               0.0
bloom_overdrive           1.0,1.0,1.0
bloom_lvl0_weight         1.0
bloom_lvl1_weight         0.64
bloom_lvl2_weight         0.32
bloom_lvl3_weight         0.16
bloom_lvl4_weight         0.08
bloom_lvl5_weight         0.06
bloom_lvl6_weight         0.04
bloom_lvl7_weight         0.02
bloom_lvl8_weight         0.01
lut_texture               lut-default.png
lut_enable                0
ui_lut_texture            lut-default.png
ui_lut_enable             0

#
# FULL SCREEN OPTIONS
#
triplebuffer              0
full_screen_brightness    1.0
full_screen_contrast      1.0
full_screen_gamma         1.0

#
# INPUT DEVICE OPTIONS
#
dual_lightgun             0

Emulated system/software

Neo-Geo CDZ

Incorrect behaviour

Black screen after the first loading screen - Can't go ingame

Expected behaviour

Goes ingame - Menu

Steps to reproduce

Start the game and wait for the loading screen

Additional details

I tested it with :

  • neocdz + neocdzj
  • Tosec dump
  • Redump dump
  • Full name "Bakumatsu Roman Daini Maku: Gekka no Kenshi: Tsuki ni Saku Hana, Chiri Yuku Hana ~ The Last Blade 2"

I searched any related issue in Github/MAME Testers/Driver source and couldn't find anything

@dinkc64
Copy link

dinkc64 commented Nov 5, 2023

I have a fix for this (somewhere) - I'll dig it up asap

@dinkc64
Copy link

dinkc64 commented Nov 5, 2023

@mamehaze the irq vectors need to be updated for neocd (the ones derived from early fbneo neocd are wrong), this is why lastblade2 breaks

in mame's neogeocd.cpp, change:
m_vblank_level = 1;
m_raster_level = 3;

vector callback func. for 68k:
static INT32 __fastcall NeoCDIRQCallback(INT32 nIRQ)
{
switch (nIRQ) {
case 1:
return (0x68 / 4); // irq 1 w/irq's 2 vector
case 3:
return (0x64 / 4); // irq 3 w/irq's 1 vector
case 2:
return (nNeoCDIRQVector);
}

return M68K_INT_ACK_AUTOVECTOR;

}

also update the vectors and irq's in mame's neogeocd.cpp's irq_update() to match this:

	if ((nIRQAcknowledge & 0x08) == 0) {
		nNeoCDIRQVector = 0x5c / 4;
		SekSetIRQLine(2, CPU_IRQSTATUS_ACK);
		return;
	}
	if ((nIRQAcknowledge & 0x10) == 0) {
		nNeoCDIRQVector = 0x58 / 4;
		SekSetIRQLine(2, CPU_IRQSTATUS_ACK);
		return;
	}
	if ((nIRQAcknowledge & 0x20) == 0) {
		nNeoCDIRQVector = 0x54 / 4;
		SekSetIRQLine(2, CPU_IRQSTATUS_ACK);
		return;
	}

best regards,

  • dink

@fuel-pcbox

This comment was marked as abuse.

@mamehaze
Copy link
Contributor

mamehaze commented Nov 5, 2023

@qeeg shut up. dink is being helpful, you are being obnoxious as usual

the instructions are clear and easy to understand, the 68k needs to take non-standard vectors for the irqs (triggering the same levels as the standard neogeo, but with custom vectors, rather than different levels)

not sure why they did it that way, but LB2 suggests they did

@fuel-pcbox

This comment was marked as abuse.

@mamehaze
Copy link
Contributor

mamehaze commented Nov 5, 2023

demanding of somebody who isn't a mame developer by expecting them to compile and change MAME code isn't more helpful to anybody, nor is it polite.

dink providing information based on how he fixed the problem in his own emulator is

@fuel-pcbox

This comment was marked as abuse.

@mamehaze
Copy link
Contributor

mamehaze commented Nov 5, 2023 via email

@mamehaze
Copy link
Contributor

mamehaze commented Nov 6, 2023

@dinkc64 I believe this implements what you've suggested
#11713

I tested neocdz lastbld2 (the game that previously didn't work) and neocdz neoturf (as I know that uses raster interrupt) and both work.

I do note that Last Blade 2 appears to lack the raster effect on the fire stage with neocdz though, I don't know if that's a design choice?

@angelosa
Copy link
Member

angelosa commented Nov 6, 2023

Is doubledr same issue btw, it looks IRQ related as well given the top of driver note.

@angelosa angelosa linked a pull request Nov 6, 2023 that will close this issue
@mamehaze
Copy link
Contributor

mamehaze commented Nov 6, 2023

doubledr still hangs while loading (the clone set doubledra works)

@Immersion95
Copy link
Author

Sorry to pollute, just wanted to thank you @dinkc64 & @mamehaze (love your blog btw)

@FoxhackDN
Copy link
Contributor

FoxhackDN commented Nov 6, 2023

Is doubledr same issue btw, it looks IRQ related as well given the top of driver note.

I think the doubledr parent might be a bad pressing, track 1 (and maybe 2?) seems to be hosed. I found forum posts that said people couldn't run the original disc on a real console when I was looking into adding the clone that worked. People said it just wouldn't start - but the later pressing worked fine. The copy on Redump marked as "Rev 1" is busted so I assume the CHD was made with a disc with the same data.

@dinkc64
Copy link

dinkc64 commented Nov 7, 2023

doubledr zeros out the vector table while loading, which causes the hang. I wonder if this is an error on the disc or something weird like that, as FoxhackDN said.

@FoxhackDN
Copy link
Contributor

http://www.neo-geo.com/forums/index.php?threads/neo-geo-cd-system-resets.22053/post-158298

According to the post above, a lot of Double Dragon discs were faulty. A Japanese second printing that fixes this may exist (the working Alt is an Export version), or maybe that -was- the second printing for all we know.

Anyway, thank you for submitting these new findings! I'll be testing the games to see if any other known bugs in the emulation have been fixed.

@mamehaze
Copy link
Contributor

mamehaze commented Nov 7, 2023

I don't think the busted pressing should be the parent then.

I also think it should be marked as (broken pressing) or similar, so people know it isn't meant to work.

@FoxhackDN
Copy link
Contributor

I tagged it as "supported=no" when I added the clone, but left it as parent because I wasn't sure if changing them around was cool or not, or what the proper way to do it was. I'm cool with the change, but I'm having issues with my internet so I can't submit anything right now. :\ If anyone wants to fix that, feel free.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants