Revision (current)
Last Updated by Spikestuff on 9/8/2022 4:17 AM
[http://i.imgur.com/Il8jonr.png|right]
This is the page where a script called "thing.avs" exists on my computer.%%%
It's similar to how the EncodingPackage was set up back in the day but they're both different to one another and the goal was for quick standard HD encoding.%%%
It reads a subfolder called "programs" for a custom functions page that pulls [http://avisynth.nl/index.php/Yadifmod2|yadifmod2] for deinterlacing (we use this and not QTGMC cause this was made for quick temp encodes).%%%
The script actually never has an option to prevent the 480i/576i check mainly cause it was half abandoned in adding stuff to it.
__This doesn't support for avoiding de-interlacing with N64 footage, make your own script.__%%%
__This doesn't compensate for VBjin as that's not written in.__%%%
__This also doesn't do stuff for quick PSXjin Encoding.__%%%
__This doesn't support 3DS, at least not yet.__%%%
__This contains early support for WonderSwan rotation.__
%%TAB_START
%%TAB Minimize Tab
%%TAB thing.avs
%%SRC_EMBED avs
# If this is a PlayStation game featuring the bios set the AVISource to <filename>_3.avi and enable multisegment.
# The file expected is <filename>_3.avi if it is not that on your dump, select whatever features the bios in the avi.
AVISource("filename.avi")
hd = true # Encoded in 1080p or 480p
handheld = false # Set if your game is on a handheld system, else leave false.
CHECKRENAME = false # enable multisegment import (letterbox), for use with WonderSwan ONLY.
ms = false # enable multisegment import
ms_base = "filename_" # common string for all segment names
ms_start = 0 # number of the first segment
ms_end = 10 # number of the last segment
ds = false # If you've created your TAS on DS.
mainscrn = false # Asking to have a single screen larger than the other.
maintop = false # Applies to the previous. If true then the top screen is the main, if false the bottom is.
sideside = false # The screens displayed next to each other.
turn = false # Rotating/Turning the DS Screen for game such as Brain Age.
# If multiple modes are set to "true", the order in which takes precedence is as follows: large main screen > side to side > rotated > normal
virtboy = false # If you've created a VirtualBoy TAS on BizHawk. Please dump with the SideBySide setting.
ms_format = "%1.0f" # string format: http://avisynth.nl/index.php/Internal_functions#String
#########################################################################
# Catered towards for the DeSmuME emulator. #
# If you want more advanced DS for changing screens. #
# This is not the script for you. This is for the basic of basics. #
#########################################################################
# Checking for human error.
ds = (Last.Width == 256) && (Last.Height == 384) ? true : false
ds ? Eval("""
handheld = true
top = last.crop(0, 0, -0, 192)
bot = last.crop(0, 192, -0, -0)
mainscrn ? \
maintop ? \
StackHorizontal(top.PointResize(512,384), bot.AddBorders(0, 192, 0, 0)) : \
StackHorizontal(bot.PointResize(512,384), top.AddBorders(0, 0, 0, 192)) \
: sideside ? \
StackHorizontal(top, bot) : \
turn ? \
StackVertical(top.AddBorders(0, 0, 0, 78), bot).TurnLeft : \
StackVertical(top.AddBorders(0, 0, 0, 48), bot)
""") : 0
#########################################################################
# BizHawk's VirtualBoy Emulator #
# Have Hawk set to "SideBySide" under "ThreeDeeMode" before dumping. #
#########################################################################
# Checking for human error.
virtboy = (Last.Width == 768) && (Last.Height == 224) ? true : false
virtboy ? Eval("""
handheld = true
Crop(0, 0, 384, 224).Levels(0, 1, 255, 0, 157)
""") : 0
#########################################################################
# Literally everything else. #
#########################################################################
# Checking for WonderSwan
WSRENAME = Eval("""
target_width = 224
target_height = 224""")
CHECKRENAME ? Eval("""
ms = false
((Last.width == 224) && (Last.height == 144)) || \
((Last.width == 144) && (Last.height == 224)) ? \
WSRENAME : false
""") : false
# If ms enabled, we use parameters of "last" to apply to all segments
Import("programs\functions.avsi")
LoadPlugin("programs\yadifmod2.dll")
resizer = hd ? "Point" : "Lanczos"
CHECKRENAME ? AppendSegmentLetterbox(ms_base, target_width, target_height, ms_start, ms_end, ms_format, pixelType).ConvertToRGB32() : \
ms ? AppendSegment(ms_base, ms_start, ms_end, ms_format, resizer).ConvertToRGB32() : last
handheld ? true : Eval("""
handheld = ((Last.Width == 240) && (Last.Height == 160)) || \
((Last.Width == 224) && (Last.Height == 224)) || \
((Last.Width == 224) && (Last.Height == 144)) || \
((Last.Width == 144) && (Last.Height == 224)) || \
((Last.Width == 160) && ((Last.Height == 152) || \
(Last.Height == 144) || \
(Last.Height == 102))) \
? true : false
""")
mainscrn ? Eval("""sideside = false""") : 0
sideside ? Eval("""
width = hd ? 1920 : 854
height = width * last.height / last.width""")\
: Eval("""
height = hd ? 1080 : 480
width = handheld \
? height * last.width / last.height \
: height * 4 / 3
width = width % 4 == 1 ? width + 3 : \
width % 4 == 2 ? width + 2 : \
width % 4 == 3 ? width + 1 : width
""")
#########################################################################
# Checking the framerate and height and cutting #
# the framerate in half for necessary YouTube reasons. #
#########################################################################
hd ? Eval("""
last.FrameRate > 65.0 ? ChangeFPS(last.FrameRate/2) : 0
last.FrameRate > 60 ? ChangeFPS(60) : 0
""") : ChangeFPS(last.FrameRate/2)
hd ? \
PointResize(width, height) \
: LanczosResize(width, height, taps=2)
CM_Colors = hd ? "709" : "601"
ConvertToYV24(ChromaResample="Point", Matrix="Rec"+CM_Colors)
ConvertToYV12(ChromaResample="Lanczos", Matrix="Rec"+CM_Colors)
# Script Created by:
# feos, Spikestuff, TheCoreyBurton, Aktan & Zinfidel
# (Mostly Spikestuff so blame them on any of the issues.)
%%END_EMBED
%%TAB functions.avsi
%%SRC_EMBED avs
# Multisegment AVI import
function AppendSegment(
\ clip sample,
\ string base,
\ int first_val,
\ int last_val,
\ string format,
\ string resizer
\){
filename = base + string(first_val, format) + ".avi"
result = AviSource(filename)
result.height == 480 ? eval("""
result = result.ConvertToYV24().yadifmod2(order=1, field=-1, mode=1, opt=2).SelectEvery(4, 0, 3).ConvertToRGB32()
""") : \
result.height == 576 ? eval("""
result = result.ConvertToYV24().yadifmod2(order=1, field=-1, mode=1, opt=2).SelectEvery(4, 1, 2).ConvertToRGB32()
""") : 0
result = result.Eval(resizer + """Resize(sample.width, sample.height)""")
return (first_val < last_val) \
? result + sample.AppendSegment(base, first_val+1, last_val, format, resizer) \
: result
}
# Multisegment AVI import (Letterbox)
function AppendSegmentLetterbox(
\ clip sample,
\ string base,
\ int target_width,
\ int target_height,
\ int first_val,
\ int last_val,
\ string format,
\ string pix_type
\){
filename = base + string(first_val, format) + ".avi"
result = AviSource(filename, pixel_type=pix_type)
xside = int(target_width - result.width) / 2
yside = int(target_height - result.height) / 2
result = result.AddBorders(xside,yside,xside,yside)
return (first_val < last_val) \
? result + sample.AppendSegmentLetterbox(base, target_width, target_height, first_val+1, last_val, format, pix_type) \
: result
}
%%END_EMBED