Compare commits

...

10 Commits

Author SHA1 Message Date
Síle Ekaterin Liszka 99550e83b2 revise README 2023-01-02 02:37:34 -08:00
Síle Ekaterin Liszka 32d9ab0f91 name change 2023-01-02 02:33:43 -08:00
Síle Ekaterin Liszka a8b8084fae update copyright 2023-01-02 01:54:15 -08:00
Kiyoshi Aman e34a93c537 README.md: Requirements section added 2018-12-30 19:57:50 -06:00
Kiyoshi Aman c4e5e805ce README.md: Special thanks section added 2018-12-30 18:54:26 -06:00
Kiyoshi Aman 1a269c177d ChangeLog: Add a changelog 2018-12-30 18:48:23 -06:00
Kiyoshi Aman b75cdf0126 README.md: Add copyright 2018-12-30 18:45:58 -06:00
Kiyoshi Aman 1c7d6e450a COPYING: Add license 2018-12-30 18:44:46 -06:00
Kiyoshi Aman 5656f8f4ef README.md: Fix errant Textile heading 2018-12-30 18:43:21 -06:00
Kiyoshi Aman 2a9df20bd1 Remove unusable readme 2018-12-30 18:41:08 -06:00
11 changed files with 156 additions and 89 deletions

1
.mailmap Normal file
View File

@ -0,0 +1 @@
Síle Ekaterin Liszka <sheila@vulpine.house> Kiyoshi Aman <kiyoshi.aman@gmail.com>

7
COPYING Normal file
View File

@ -0,0 +1,7 @@
Copyright 2023 Síle Ekaterin Liszka
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

8
ChangeLog Normal file
View File

@ -0,0 +1,8 @@
0.4:
- Complete rewrite.
- Adds ability to blacklist spells.
0.3:
- GBA support!
0.2:
- Reworked learning rates. Rates overall lower.
- Majority of output moved to a spoilers file.

View File

@ -2,6 +2,13 @@
Asura is a program for generating a 'four esper' challenge run for Final Fantasy 6. Only the US releases for the Super Nintendo and all official releases for the Game Boy Advance are supported. Asura is a program for generating a 'four esper' challenge run for Final Fantasy 6. Only the US releases for the Super Nintendo and all official releases for the Game Boy Advance are supported.
Asura is made available under the terms of the MIT license; see `COPYING` for more information.
## Requirements
* Python 3.4+
* A US release of Final Fantasy III for the Super Nintendo OR any official Game Boy Advance release of Final Fantasy VI.
## Usage ## Usage
> `./main.py rom.ext [seed|None[ A,List,Of,Spells]]` > `./main.py rom.ext [seed|None[ A,List,Of,Spells]]`
@ -12,52 +19,28 @@ Asura is a program for generating a 'four esper' challenge run for Final Fantasy
The final argument is a list of spells to prohibit. All official spell names are recognized. The final argument is a list of spells to prohibit. All official spell names are recognized.
h2. Notes ## Notes
The spell selection mechanism uses two separate kinds of slots. The game itself supports up to five spells per esper, but for balance purposes each spell costs a number of points in the range [1,5], and each esper has 6 points to 'spend'. The following table enumerates the *current* point assignments (spells not enumerated cost one point): The spell selection mechanism uses two separate kinds of slots. The game itself supports up to five spells per esper, but for balance purposes each spell costs a number of points in the range [1,5], and each esper has 6 points to 'spend'. The following table enumerates the *current* point assignments (spells not enumerated cost one point):
<table> | Spell | Pts | Spell | Pts | Spell | Pts | Spell | Pts |
<thead> | ------- | --- | -------- | --- | ------- | --- | ------- | --- |
<tr><th>Spell</th><th>Pts</th><th>Spell</th><th>Pts</th><th>Spell</th><th>Pts</th><th>Spell</th><th>Pts</th></tr> | Quick | 5 | Arise | 4 | Death | 3 | Cura | 2 |
</thead> | Ultima | 5 | Blizzaga | 4 | Graviga | 3 | Haste | 2 |
<tbody> | Gravija | 5 | Curaga | 4 | Hastega | 3 | Raise | 2 |
<tr><td>Quick</td><td align="center">5</td> | | | Firaga | 4 | Esuna | 3 | Reraise | 2 |
<td>Arise</td><td align="center">4</td> | | | Meltdown | 4 | Osmose | 3 | Slow | 2 |
<td>Death</td><td align="center">3</td> | | | Quake | 4 |
<td>Cura</td><td align="center">2</td></tr> | | | Slowga | 4 |
<tr><td>Ultima</td><td align="center">5</td> | | | Thundaga | 4 |
<td>Blizzaga</td><td align="center">4</td> | | | Tornado | 4 |
<td>Graviga</td><td align="center">3</td> | | | Flood | 4 |
<td>Haste</td><td align="center">2</td></tr> | | | Valor | 4 |
<tr><td>Gravija</td><td align="center">5</td>
<td>Curaga</td><td align="center">4</td> ## Special Thanks
<td>Hastega</td><td align="center">3</td>
<td>Raise</td><td align="center">2</td></tr> The following people contributed to this project:
<tr><td colspan="2"></td>
<td>Firaga</td><td align="center">4</td> * Lenophis: Provided the esper-gain offsets for the SNES US release.
<td>Esuna</td><td align="center">3</td> * [ff6hacking.com](https://ff6hacking.com): Provided the esper data offsets and lists.
<td>Reraise</td><td align="center">2</td></tr> * Can of Worms: Figured out the esper-gain offsets for the GBA releases, including the bonus content espers.
<tr><td colspan="2"></td>
<td>Meltdown</td><td align="center">4</td>
<td>Osmose</td><td align="center">3</td>
<td>Slow</td><td align="center">2</td></tr>
<tr><td colspan="2"></td>
<td>Quake</td><td align="center">4</td>
<td colspan="4"></td></tr>
<tr><td colspan="2"></td>
<td>Slowga</td><td align="center">4</td>
<td colspan="4"></td></tr>
<tr><td colspan="2"></td>
<td>Thundaga</td><td align="center">4</td>
<td colspan="4"></td></tr>
<tr><td colspan="2"></td>
<td>Tornado</td><td align="center">4</td>
<td colspan="4"></td></tr>
<tr><td colspan="2"></td>
<td>Flood</td><td align="center">4</td>
<td colspan="4"></td></tr>
<tr><td colspan="2"></td>
<td>Valor</td><td align="center">4</td>
<td colspan="4"></td></tr>
</tbody>
</table>

View File

@ -1,32 +0,0 @@
h1. Asura
Asura is a program for generating a 'four esper' challenge run for Final Fantasy 6. Only the US releases for the Super Nintendo and all official releases for the Game Boy Advance are supported.
h2. Usage
bq. @./main.py rom.ext [seed|None[ A,List,Of,Spells]]@
@rom.ext@ must be a ROM image of Final Fantasy III for the SNES (either revision) or Final Fantasy VI Advance (Japanese, US, or European releases).
@seed@, if passed and not 'None', uses the time as of the running of the script for the seed.
The final argument is a list of spells to prohibit. All official spell names are recognized.
h2. Notes
The spell selection mechanism uses two separate kinds of slots. The game itself supports up to five spells per esper, but for balance purposes each spell costs a number of points in the range [1,5], and each esper has 6 points to 'spend'. The following table enumerates the *current* point assignments (spells not enumerated cost one point):
|_. Spell |_. Pts |_. Spell |_. Pts |_. Spell |_. Pts |_. Spell |_. Pts |
| Quick |=. 5 | Arise |=. 4 | Death |=. 3 | Cura |=. 2 |
| Ultima |=. 5 | Blizzaga |=. 4 | Graviga |=. 3 | Haste |=. 2 |
| Gravija |=. 5 | Curaga |=. 4 | Hastega |=. 3 | Raise |=. 2 |
| | | Firaga |=. 4 | Esuna |=. 3 | Reraise |=. 2 |
| | | Meltdown |=. 4 | Osmose |=. 3 | Slow |=. 2 |
| | | Quake |=. 4 | | | | |
| | | Slowga |=. 4 | | | | |
| | | Thundaga |=. 4 | | | | |
| | | Tornado |=. 4 | | | | |
| | | Flood |=. 4 | | | | |
| | | Valor |=. 4 | | | | |

View File

@ -1,3 +1,22 @@
# Copyright 2023 Síle Ekaterin Liszka
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from random import seed, choice from random import seed, choice
from io import BytesIO from io import BytesIO

View File

@ -1,17 +1,22 @@
# Copyright (C) 2019 Kiyoshi Aman # Copyright 2023 Síle Ekaterin Liszka
# #
# This program is free software: you can redistribute it and/or modify # Permission is hereby granted, free of charge, to any person obtaining a copy
# it under the terms of the GNU Affero General Public License version 3 # of this software and associated documentation files (the "Software"), to deal
# as published by the Free Software Foundation. # in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# #
# This program is distributed in the hope that it will be useful, but # The above copyright notice and this permission notice shall be included in
# WITHOUT ANY WARRANTY; without even the implied warranty of # all copies or substantial portions of the Software.
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# License along with this program. If not, see # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# <https://www.gnu.org/licenses/>. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from copy import copy from copy import copy
from enum import IntEnum from enum import IntEnum

View File

@ -1,3 +1,22 @@
# Copyright 2023 Síle Ekaterin Liszka
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from random import sample from random import sample

View File

@ -1,3 +1,22 @@
# Copyright 2023 Síle Ekaterin Liszka
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from random import randint from random import randint
from .data import Spell, slots, slots_gba from .data import Spell, slots, slots_gba

View File

@ -1,3 +1,22 @@
# Copyright 2023 Síle Ekaterin Liszka
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from random import sample from random import sample

19
main.py
View File

@ -1,4 +1,23 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# Copyright 2023 Síle Ekaterin Liszka
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from sys import argv, exit from sys import argv, exit
from time import time from time import time