~ubuntu-branches/ubuntu/lucid/fceux/lucid

« back to all changes in this revision

Viewing changes to fceu/output/luaScripts/PunchOutTraining.lua

  • Committer: Bazaar Package Importer
  • Author(s): Fabrice Coutadeur
  • Date: 2009-12-14 08:05:17 UTC
  • Revision ID: james.westby@ubuntu.com-20091214080517-abi5tj8avthfan7c
Tags: upstream-2.1.2+repack
ImportĀ upstreamĀ versionĀ 2.1.2+repack

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
-- Just something quick for Mike Tyson's Punch Out!!
 
2
-- Intended to help time hits in real time.
 
3
--FatRatKnight
 
4
 
 
5
 
 
6
local EHP= 0x0398  -- Enemy HP address
 
7
local TMR= 23      -- Frames in advance for your punches.
 
8
local BND= -8      -- KEEP NEGATIVE!! Frames after the golden zone.
 
9
local threshold= 15-- How many frames before the target timing does it allow?
 
10
 
 
11
local DISPx= 180
 
12
local DISPy= 180
 
13
local DISPx2= DISPx+11 -- Right side of box. Adjust that plus to your need
 
14
local DisplayBar= true
 
15
 
 
16
local timer= 0
 
17
local held= 0
 
18
local accuracy= 0
 
19
local earlies= 0
 
20
local lates= 0
 
21
 
 
22
local perfect= 0
 
23
 
 
24
local EnemyHP
 
25
local lastEHP
 
26
local LastHit=-50
 
27
local HitTiming= BND-1
 
28
 
 
29
--*****************************************************************************
 
30
function Is_Hit()
 
31
--*****************************************************************************
 
32
    if lastEHP then
 
33
        if EnemyHP < lastEHP then
 
34
            return true
 
35
        end
 
36
    end
 
37
    return false
 
38
end
 
39
 
 
40
 
 
41
local LastButtons= {}
 
42
local Buttons= {}
 
43
--*****************************************************************************
 
44
function IsPress()
 
45
--*****************************************************************************
 
46
    LastButtons["A"]= Buttons["A"]
 
47
    LastButtons["B"]= Buttons["B"]
 
48
    LastButtons["select"]= Buttons["select"]
 
49
 
 
50
    Buttons= joypad.get(1)
 
51
    if (Buttons["A"] and not LastButtons["A"]) or (Buttons["B"] and not LastButtons["B"]) then
 
52
        return true
 
53
    end
 
54
    return false
 
55
end
 
56
 
 
57
 
 
58
--*****************************************************************************
 
59
while true do
 
60
--*****************************************************************************
 
61
    EnemyHP= memory.readbyte(EHP)
 
62
    gui.text(144,22,EnemyHP)
 
63
 
 
64
    if IsPress() then
 
65
        if LastHit <= threshold and LastHit >= BND then
 
66
            HitTiming= LastHit
 
67
            LastHit= BND-1
 
68
            timer= -18
 
69
            if HitTiming > 0 then
 
70
                accuracy= accuracy + HitTiming
 
71
                earlies= earlies + 1
 
72
            elseif HitTiming < 0 then
 
73
                accuracy= accuracy - HitTiming
 
74
                lates= lates + 1
 
75
            else
 
76
                perfect= perfect + 1
 
77
            end
 
78
        end
 
79
    end
 
80
 
 
81
    if Buttons["A"] or Buttons["B"] then
 
82
        held= held + 1
 
83
    else
 
84
        if held == 1 then
 
85
            timer= 0
 
86
            LastHit= HitTiming-1
 
87
        end
 
88
        held= 0
 
89
    end
 
90
 
 
91
    if Is_Hit() then
 
92
        LastHit= TMR
 
93
    end
 
94
 
 
95
 
 
96
 if DisplayBar then
 
97
    for i= 1, TMR do
 
98
        local color= "black"
 
99
        if i == LastHit then
 
100
            color= "green"
 
101
        elseif i == HitTiming and timer < 0 then
 
102
            color= "red"
 
103
            gui.text(100,80,"early " .. i)
 
104
        end
 
105
        gui.drawbox(DISPx, DISPy-3 - 4*i,DISPx2, DISPy-1 - 4*i,color)
 
106
    end
 
107
 
 
108
    if HitTiming == 0 and timer < 0 then
 
109
        gui.text(128,80,"OK")
 
110
        gui.drawbox(128,80,144,90,"green")
 
111
        local color= "white"
 
112
        if     (timer % 3) == 0 then
 
113
            color= "green"
 
114
        elseif (timer % 3) == 1 then
 
115
            color= "blue"
 
116
        end
 
117
        gui.drawbox(DISPx  , DISPy  , DISPx2, DISPy+2, color)
 
118
        gui.drawbox(DISPx-2, DISPy-2, DISPx2+2, DISPy+4, color)
 
119
    else
 
120
        local color= "black"
 
121
        if i == LastHit then
 
122
            color= "green"
 
123
        end
 
124
        gui.drawbox(DISPx  , DISPy  ,DISPx2, DISPy+2,color)
 
125
        gui.drawbox(DISPx-2, DISPy-2,DISPx2+2, DISPy+4,"white")
 
126
    end
 
127
 
 
128
    for i= BND, -1 do
 
129
        local color= "black"
 
130
        if i == LastHit then
 
131
            color= "green"
 
132
        elseif i == HitTiming and timer < 0 then
 
133
            color= "red"
 
134
            gui.text(146,80,"late " .. -i)
 
135
        end
 
136
        gui.drawbox(DISPx, DISPy+3 - 4*i,DISPx2, DISPy+5 - 4*i,color)
 
137
    end
 
138
 end
 
139
 
 
140
    if Buttons["select"] and not LastButtons["select"] then
 
141
        if DisplayBar then
 
142
            DisplayBar= false
 
143
        else
 
144
            DisplayBar= true
 
145
        end
 
146
    end
 
147
    gui.text(5,120,"Timing error: " .. accuracy)
 
148
    gui.text(5,140,"Perfect hits: " .. perfect)
 
149
    gui.text(5,160,"Early: " .. earlies)
 
150
    gui.text(5,170,"Late: " .. lates)
 
151
    LastHit= LastHit-1
 
152
    FCEU.frameadvance()
 
153
    lastEHP= EnemyHP
 
154
    timer= timer+1
 
155
end
 
 
b'\\ No newline at end of file'