Jump to content

[Arcade PC] Dance Dance Revolution [A20] [A20 PLUS] [A3] [World] (Konami)


Go to solution Solved by Gliss,

Recommended Posts

Posted
11 hours ago, piotr25691 said:

To anyone who cares: I'm still working on this StepMania based very faithful DDR and it's pretty great!

 

- Now supporting Shock Arrow judgments (buggy)

- Corrected FLARE danger textures

- Minor fixes everywhere

 

https://github.com/h-lunah/DDR-A3-THEME/tree/legacy

 

PS: if mods believe this is off topic, i can redact all related posts, please let me know.

Can you add border and center guidelines and make them indiviual for p1 and p2 and also the ink is dead

Posted (edited)
13 hours ago, makoflagkk said:

I know but I mean make two different types of guidelines border and center option. And make them disappear after a song and also can you make them individual for each player rather than have them locked onto two players thank you 

 

turns out this is already implemented using BeginReadyDelay() for beginning and GAMESTATE:GetCurrentSong():GetLastBeat() for end, as well as being individual for every player

Edited by piotr25691
Posted
On 11/26/2024 at 5:10 PM, piotr25691 said:

To anyone who cares: I'm still working on this StepMania based very faithful DDR and it's pretty great!

 

- Now supporting Shock Arrow judgments (buggy)

- Corrected FLARE danger textures

- Minor fixes everywhere

 

https://github.com/h-lunah/DDR-A3-KIT/tree/legacy

 

PS: if mods believe this is off topic, i can redact all related posts, please let me know.

How about CONSTANT?

Posted
20 hours ago, NoctsRanun said:

How about CONSTANT?

Has been implemented. You cannot set a specific amount of milliseconds because StepMania doesn't do that but an approximate implementation will be uploaded.

Posted

Extra Stage stars now also work just like the arcade game!

 

Here I got 8 stars in the game, these stars carry over to the next game and give you an Extra Stage once you got 9.

image.png.58ad5340ce1c19548022f5eeb73242d8.png

Posted
7 hours ago, piotr25691 said:

Extra Stage stars now also work just like the arcade game!

 

Here I got 8 stars in the game, these stars carry over to the next game and give you an Extra Stage once you got 9.

image.png.58ad5340ce1c19548022f5eeb73242d8.png

Hmmm....can this work on current versions and BABY-LON'S GALAXY too...?

Posted (edited)
11 hours ago, NoctsRanun said:

Hmmm....can this work on current versions and BABY-LON'S GALAXY too...?

Well, BABY-LON'S GALAXY can't be implemented, but the extra stage stars implementation is part of "01 ExtraStageStars.lua"

Edited by piotr25691
Posted
8 minutes ago, piotr25691 said:

Well, BABY-LON'S GALAXY can't be implemented, but the extra stage stars implementation is part of "01 ExtraStageStars.lua"

Worked on SM5? I see.

Posted (edited)
2 hours ago, NoctsRanun said:

Worked on SM5? I see.

This video showcase shows off the following features:

- Extra Stage Stars

- FLARE EX lifebar

- Shock Arrow judgments

- Target Score (+XXXX text below the judgments)

 

This has been made possible by editing the StepMania engine and doing a lot of Lua scripting


https://files.catbox.moe/0fk69f.mp4

 

All of this work is public on my GitHub repository so you can take the Lua script and add it to your own theme.

Edited by piotr25691
Posted
On 11/28/2024 at 1:18 AM, piotr25691 said:

 

turns out this is already implemented using BeginReadyDelay() for beginning and GAMESTATE:GetCurrentSong():GetLastBeat() for end, as well as being individual for every player

No I mean like player one can have guidelines on and player 2 can have no guidelines on. And guidelines should disappear like this image.gif.ff942c5a06a4b8a21e32e9aa8b58e234.gif

Posted (edited)
On 12/1/2024 at 10:11 PM, makoflagkk said:

No I mean like player one can have guidelines on and player 2 can have no guidelines on. And guidelines should disappear like this image.gif.ff942c5a06a4b8a21e32e9aa8b58e234.gif

It now works, not yet for both players but the appearance and disappearance timing is arcade accurate. The texture can't be changed outright cuz the theme uses Metrics for Guidelines (in this case it's NoteField bars) and I'd have to wrap Lua around the metric values.

Edited by piotr25691
Posted
En 1/12/2024 a las 8:25, piotr25691 dijo:

This video showcase shows off the following features:

- Extra Stage Stars

- FLARE EX lifebar

- Shock Arrow judgments

- Target Score (+XXXX text below the judgments)

 

This has been made possible by editing the StepMania engine and doing a lot of Lua scripting


https://files.catbox.moe/0fk69f.mp4

 

All of this work is public on my GitHub repository so you can take the Lua script and add it to your own theme.

great theme,but i have 2 problems

- the left/right arrow increase/decrease speed in game

-how to display random bga movies

Posted
2 hours ago, Don_Padoli said:

great theme,but i have 2 problems

- the left/right arrow increase/decrease speed in game

-how to display random bga movies


- You need to set it to "only dedicated menu buttons"

- In the custom options you can change DanceStages to something else 

Posted
On 12/1/2024 at 7:25 PM, piotr25691 said:

This video showcase shows off the following features:

- Extra Stage Stars

- FLARE EX lifebar

- Shock Arrow judgments

- Target Score (+XXXX text below the judgments)

 

This has been made possible by editing the StepMania engine and doing a lot of Lua scripting


https://files.catbox.moe/0fk69f.mp4

 

All of this work is public on my GitHub repository so you can take the Lua script and add it to your own theme.

Ah I remember the group dancers part the one Enciso posted 

Posted (edited)
On 12/3/2024 at 12:00 PM, NoctsRanun said:

Ah I remember the group dancers part the one Enciso posted 

Yes as Enciso's dance stages are the main background that matches the theme

 

I uploaded another update that adds region fonts, fixes the 0 more coin(s) needed bug and reworks guidelines and extra stage stars to be more correct

Edited by piotr25691
Posted
En 3/12/2024 a las 3:19, piotr25691 dijo:


- You need to set it to "only dedicated menu buttons"

- In the custom options you can change DanceStages to something else 

the step zone is ok now,thanks,but the generic random dancer don´t show,only title or black screen ;(

2024-12-05_003657.jpg

Posted
18 hours ago, piotr25691 said:

Yes as Enciso's dance stages are the main background that matches the theme

 

I uploaded another update that adds region fonts, fixes the 0 more coin(s) needed bug and reworks guidelines and extra stage stars to be more correct

I love the new theme updates but I have a major concern. When I press the operator menu or go to theme options you can’t change in game settings or change the theme so the only way I can change themes is by deleting and re adding it back. 

Posted
1 hour ago, makoflagkk said:

I love the new theme updates but I have a major concern. When I press the operator menu or go to theme options you can’t change in game settings or change the theme so the only way I can change themes is by deleting and re adding it back. 

To change the settings, you need to select the blank option in the service menu, press enter, go to Appearance Options and change the theme, and re-enter the service menu. This is done to match the service menu to the arcade game.

10 hours ago, Don_Padoli said:

the step zone is ok now,thanks,but the generic random dancer don´t show,only title or black screen ;(

2024-12-05_003657.jpg

in the Custom Options, if you changed it to be RandomMovies (accessible via blank option in the service menu), change it to RandomMovies and install some random movie files in the RandomMovies folder. Examples of such files are available on my repository: https://github.com/h-lunah/DDR-A3-KIT/tree/legacy/RandomMovies

Posted
hace 4 horas, piotr25691 dijo:

To change the settings, you need to select the blank option in the service menu, press enter, go to Appearance Options and change the theme, and re-enter the service menu. This is done to match the service menu to the arcade game.

in the Custom Options, if you changed it to be RandomMovies (accessible via blank option in the service menu), change it to RandomMovies and install some random movie files in the RandomMovies folder. Examples of such files are available on my repository: https://github.com/h-lunah/DDR-A3-KIT/tree/legacy/RandomMovies

same problem

2024-12-05_144148.jpg

Sin título.png

Posted (edited)
On 12/5/2024 at 8:55 AM, piotr25691 said:

This might be the hardest thing to implement in the theme but what about a custom announcer engine for screen gameplay overlay default.lua? The announcer in Ace’s engine works in multiple ways it cues lines for 50 combo milestones 100, combo milestones, and also reacts to the BPM’s frequency of a song. If a song has a high BPM rate the announcer will sound more frequently if the announcer has lower BPM lines will be more spaced out. I tried to code this before and got close but failed. It also runs on an elapsed time for combos if you break them or how it catches up. Announcer for during a song works in a lot of different ways and could be quite the task to add something that mimics ddr’s engine. You would need a lot of conditions and if statements to make this work. You would also need to relabel the folders so engine defined sounds don’t overlap with the custom sounds here is a code I made but it is not good. 
 

 

 

 

Screen Gameplay Overlay local t = Def.ActorFrame{}
local soundPlaying = false
local lastComboMilestonePlayed = 0
local lastCheeringComboPlayed = 0
local lastTimeMilestonePlayed = 0
local comboCooldown = 5 -- Cooldown period for combo milestones
local cheeringCooldown = 5 -- Cooldown period for cheering
local firstBPMComboPlayed = false -- Flag to ensure the first BPM-based milestone is a combo
local alternateSoundIndex = 0 -- Index to alternate between combo and cheering
local lastFixedComboMilestonePlayed = 0 -- Track the last fixed 50 combo milestone played
local firstStepMade = false -- Flag to check if the first step is made

for pn in ivalues(GAMESTATE:GetHumanPlayers()) do
t[#t+1] = LoadActor("FullCombo", pn)
end

t[#t+1] = LoadActor("GameOver")

local currentSong = GAMESTATE:GetCurrentSong()
local bpm = currentSong and currentSong:GetDisplayBpms()[2] or 120 -- Default BPM if currentSong is nil
local songLength = currentSong and currentSong:GetLastSecond() or 180 -- Default length if currentSong is nil

if currentSong and currentSong:GetDisplayFullTitle() == "LET'S CHECK YOUR LEVEL!" then
t[#t+1] = LoadActor("LET'S CHECK YOUR LEVEL!")
elseif currentSong and currentSong:GetDisplayFullTitle() == "Lesson by DJ" then
t[#t+1] = LoadActor("Lesson by DJ")
end

-- Function to determine combo thresholds based on BPM
local function getComboThresholds(bpm)
local milestones = {}
local baseThreshold = 50

if bpm >= 200 then
baseThreshold = 20
elseif bpm >= 180 then
baseThreshold = 25
elseif bpm >= 160 then
baseThreshold = 30
elseif bpm >= 140 then
baseThreshold = 35
elseif bpm >= 120 then
baseThreshold = 40
else
baseThreshold = 45
end

for i = baseThreshold, 1000, baseThreshold do
table.insert(milestones, i)
end

-- Always include every 100 combos as special milestones
for i = 100, 1000, 100 do
table.insert(milestones, i)
end

return milestones
end

local comboThresholds = getComboThresholds(bpm)

-- Function to determine cheering thresholds based on BPM
local function getCheeringThresholds(bpm)
local milestones = {}
local baseCheeringThreshold = 75

if bpm >= 200 then
baseCheeringThreshold = 45
elseif bpm >= 180 then
baseCheeringThreshold = 50
elseif bpm >= 160 then
baseCheeringThreshold = 60
elseif bpm >= 140 then
baseCheeringThreshold = 70
elseif bpm >= 120 then
baseCheeringThreshold = 75
else
baseCheeringThreshold = 85
end

for i = baseCheeringThreshold, 1000, baseCheeringThreshold do
table.insert(milestones, i)
end

return milestones
end

local cheeringThresholds = getCheeringThresholds(bpm)

-- Function to determine time thresholds based on song length
local function getTimeThresholds(songLength)
local baseThreshold = 30
local milestones = {}

for i = 1, math.floor(songLength / baseThreshold) do
local milestone = baseThreshold * i
table.insert(milestones, milestone)
end

return milestones
end

local timeThresholds = getTimeThresholds(songLength)

-- Custom announcer lines for specific combo milestones and time intervals
t[#t+1] = Def.ActorFrame{
ComboChangedMessageCommand=function(self, params)
local combo = params.PlayerStageStats:GetCurrentCombo()
local maxCombo = params.PlayerStageStats.GetMaxCombo and params.PlayerStageStats:GetMaxCombo() or 0
local songPosition = GAMESTATE:GetSongPosition()
local currentTime = songPosition:GetMusicSeconds()

-- Check if the first step is made
if combo > 0 then
firstStepMade = true
end

-- Prevent announcer from playing before the first step is made
if not firstStepMade then
return
end

-- Handle special milestones for 100 - 1000 combos (always play these)
if combo > 0 and combo % 100 == 0 and lastComboMilestonePlayed ~= combo then
SOUNDTonguelayAnnouncer("combo_" .. combo)
lastComboMilestonePlayed = combo
return
end

if combo > 0 then
-- Check fixed 50 combo milestones first (not divisible by 100)
if combo % 50 == 0 and combo % 100 ~= 0 and lastFixedComboMilestonePlayed ~= combo then
SOUNDTonguelayAnnouncer("combo_50")
lastFixedComboMilestonePlayed = combo
soundPlaying = true
self:sleep(comboCooldown):queuecommand("ResetSoundFlag")
return
end

-- Check BPM-based combo milestones
if not soundPlaying then
for _, milestone in ipairs(comboThresholds) do
if combo == milestone and lastComboMilestonePlayed ~= combo then
if combo % 100 ~= 0 and combo % 50 ~= 0 then -- Skip special milestones and fixed 50 milestones
if not firstBPMComboPlayed then
SOUNDTonguelayAnnouncer("combo_50")
firstBPMComboPlayed = true
print("Playing first BPM-based combo_50")
else
-- Alternate between combo_50 and cheering
if alternateSoundIndex == 0 then
SOUNDTonguelayAnnouncer("combo_50")
print("Playing combo_50")
else
SOUNDTonguelayAnnouncer("cheering")
print("Playing cheering")
end
alternateSoundIndex = (alternateSoundIndex + 1) % 2 -- Cycle through 0, 1
end
end
lastComboMilestonePlayed = combo
soundPlaying = true
self:sleep(comboCooldown):queuecommand("ResetSoundFlag")
return
end
end

-- Check cheering milestones if no combo milestone was played
for _, milestone in ipairs(cheeringThresholds) do
if combo == milestone and lastCheeringComboPlayed ~= combo then
SOUNDTonguelayAnnouncer("cheering")
print("Playing standard cheering")
lastCheeringComboPlayed = combo
soundPlaying = true
self:sleep(cheeringCooldown):queuecommand("ResetSoundFlag")
return
end
end
end
end

-- Handle combo break and ensure fixed 50 combo milestone still goes off
if combo == 0 and not soundPlaying then
if maxCombo > 0 and maxCombo < 50 then
SOUNDTonguelayAnnouncer("combo_50")
soundPlaying = true
self:sleep(comboCooldown):queuecommand("ResetSoundFlag")
return
end

lastComboMilestonePlayed = 0
lastCheeringComboPlayed = 0
lastFixedComboMilestonePlayed = 0

-- Adjust for song length if combo is broken before 50 combos
if maxCombo < 50 then
local elapsedTimeRatio = maxCombo / 50
local expectedMilestoneTime = songLength * elapsedTimeRatio
if currentTime >= expectedMilestoneTime then
SOUNDTonguelayAnnouncer("combo_50")
soundPlaying = true
self:sleep(comboCooldown):queuecommand("ResetSoundFlag")
return
end
end

-- Make the announcer catch up based on song timing
for _, milestone in ipairs(timeThresholds) do
if math.floor(currentTime) == milestone and lastTimeMilestonePlayed ~= milestone then
SOUNDTonguelayAnnouncer("time_interval_" .. milestone)
lastTimeMilestonePlayed = milestone
soundPlaying = true
self:sleep(comboCooldown):queuecommand("ResetSoundFlag")
return
end
end
end
end,
ResetSoundFlagCommand=function(self)
soundPlaying = false
end,

UpdateCommand=function(self)
local songPosition = GAMESTATE:GetSongPosition()
local currentTime = songPosition:GetMusicSeconds()

-- Check for 3 seconds before or after fixed 50 or 100 combo milestones
local milestones = {}
for i = 50, 1000, 50 do
table.insert(milestones, i)
end

for _, milestone in ipairs(milestones) do
local milestoneTime = milestone / bpm * 60 -- Convert combo to time
if math.abs(currentTime - milestoneTime) <= 3 and not soundPlaying and lastCheeringComboPlayed ~= milestone then
SOUNDTonguelayAnnouncer("cheering_combo")
lastCheeringComboPlayed = milestone
soundPlaying = true
self:sleep(cheeringCooldown):queuecommand("ResetSoundFlag")
return
end
end
end
}

return t

 

Edited by makoflagkk
Posted (edited)
12 hours ago, piotr25691 said:

You imply I should add a custom announcer engine?

Add no. Would it be a nice addition to make the theme feel more authentic to DDR yes.  But this is probably my last post on this subject because this forum is about arcade data not StepMania or the sort 

Edited by makoflagkk
Posted
1 hour ago, makoflagkk said:

Add no. Would it be a nice addition to make the theme feel more authentic to DDR yes.  But this is probably my last post on this subject because this forum is about arcade data not StepMania or the sort 

Yes we should as it's getting off topic

 

this is only partially related

Posted
30 minutes ago, carlosgordon1970 said:

 

and what about the golden cabinet? can we change that or it isnt a thing anymore?? 

Only for A3 there was a Cabinet Type 6 (Gold). DDR WORLD has no gold cab option.

 

If you're trying to patch DDR A3, turn on the Force Cabinet Type 6 option. For DDR WORLD there is no such option.

Posted
hace 14 minutos, piotr25691 dijo:

Only for A3 there was a Cabinet Type 6 (Gold). DDR WORLD has no gold cab option.

 

If you're trying to patch DDR A3, turn on the Force Cabinet Type 6 option. For DDR WORLD there is no such option.

ooohhh i see thanks!, so, we cant play the events? i am using asphyxia latest, i though i needed to enable gold cab to play them

Posted
En 7/12/2024 a las 15:57, carlosgordon1970 dijo:

ooohhh i see thanks!, so, we cant play the events? i am using asphyxia latest, i though i needed to enable gold cab to play them

image.png.f4149aadaf35ef0e0114476d6b02e436.png

Posted
3 hours ago, donwolfoz said:

image.png.f4149aadaf35ef0e0114476d6b02e436.png

Note that this isn't technically Gold mode as it has been removed from WORLD. This solely is to change the machine type from a 32-bit (white A cab) to a 64-bit (gold A20 cab) model

Posted
En 5/12/2024 a las 10:55, piotr25691 dijo:

To change the settings, you need to select the blank option in the service menu, press enter, go to Appearance Options and change the theme, and re-enter the service menu. This is done to match the service menu to the arcade game.

in the Custom Options, if you changed it to be RandomMovies (accessible via blank option in the service menu), change it to RandomMovies and install some random movie files in the RandomMovies folder. Examples of such files are available on my repository: https://github.com/h-lunah/DDR-A3-KIT/tree/legacy/RandomMovies

Update: rename files to .avi and now works perfect!

En 7/12/2024 a las 15:57, carlosgordon1970 dijo:

ooohhh i see thanks!, so, we cant play the events? i am using asphyxia latest, i though i needed to enable gold cab to play them

use asphyxia + musicdb to play all songs and events

Posted
20 hours ago, Don_Padoli said:

Update: rename files to .avi and now works perfect!

use asphyxia + musicdb to play all songs and events

ohhh I have to remux my files to AVI

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...