Posts for feos

1 2 193 194 195 441 442
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Alyosha, there were posts by true back when some of the recent glitched Kirbys was published, look those up.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
For whatever schizophrenic reason they just drop the res by 1 when you're uploading 60fps. For html5. We upload 1440p+ anyway.
Koh1fds wrote:
On 1080p monitor 4k is much better. Even this is extreme condition. I still thinks that 4k is good to have. Even there is not that big difference between 4k and 1440p than between 1440p and 1080p. 4k still the most cleaner of all on 1080p monitor
I posted the deal above.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Koh1fds wrote:
Not only resolutions above 1080p on youtube have noticeable less compression artifacts, but if you watch 4k video on 1080 monitor it looks noticeable sharper and cleaner than same video at 1080p. It's better to have those resolutions even for 2D games, in my opinion ofc, because there noticeable difference edit: http://i.imgur.com/Uz7DPyC.png here it is. Both screenshots made at 1080 monitor with my lame encode. First made at 4k youtube replay and second second at 1080p replay. Both zoomed x8 with nearest neighbor. You can clearly see the difference. I can't see why not to have 4k encode if there is noticeable difference even at 1080 monitor. If you have 4k encode watcher can choose what he/she wants. Maybe someone wants more sharpness and clearness of the picture. Why not to have this?
This is not about whether there are artifacts or not, because there mostly are anyway. This is about how much does your naked eye spot compared to lossless encode. You'll never get the true lossless look out of youtube, no matter how much "better" it gets. Transparency is when it stops making the difference for an eye. We were uploading 2D encodes that got processed up to 4K, even though their actual res was lower: 224*8 for instance. Their 4K res is artificial if you want pixel-perfection, the only thing it guarantees is higher bitrate, which is still lossy, so I dunno. If someone finally does mkvmerge tests and compares mkv aspect ratio correction against avisynth one, and the former doesn't look worse, we will switch to that, since then we won't generate too much overhead going 8x again. Otherwise... it's not worth it. PS: Your comparison is pointless, you should have put 1440p back to back with 4K, since we do upload 1440p+ minimally. I set up the official script to do that.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Seriously though... Increment the numbers is not the same thing as technological progress. 10bit444 and opus were the latter. Switching from x^y pixels to x^z pixels is the former. For 3D content, 4K is justified if you render everything at that resolution, just look at the recent Banjo Kazooie HD encode. Something higher? Find the person who will be stably doing that and be my guest. But for 2D content, there's really no point, since it's the same huge pixels. Youtube does butcher the bitrate beyond expectations, so various variants of super hires are all the same rotten apples.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
This didn't speed me up, since it requires using the bit library for splitting.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Looks weird, did you forget to disable html?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Spikestuff wrote:
feos wrote:
^ We need an endless TAS for that, the mankind finally deserved it!!!
Did you forget?: #3912: adelikat's FDS Super Mario Bros. 2 in 115:17:46:40.00
That's exactly what I meant. Someone should start encoding it, so that by the time it gets judged, it would be published quicker.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
GetBlock() is insanely slow, because for every action, there's a call from C# to lua core written in C, that generates a ton of overhead compared to the same function running in Gens. For whatever reason, not wiping the offscreen data (and dropping all the bounds checks) slows me down a few fps. The reason I keep mentioning the size of the resulting table is because it does slow the emu down if the level map is too wide, even if I don't even iterate through all the entries.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
^ We need an endless TAS for that, the mankind finally deserved it!!!
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Fog wrote:
1, 2, 3, 4! I declare a frame war!
No one has a chance dude. Only Aglar can improve this now.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Thanks! I do the bounds check there to see if I should remove the block that went offscreen or add the new block I scrolled in. There's a check area around the screen borders. Array of functions doesn't seem to speed me up at all. But switching to 2 nested loops saved me some 10 fps. What I had in mind was some way to stop using such a huge array of cache entries, but I still don't know how. Download Gargoyles.lua
Language: lua

-- Gargoyles, Genesis (BizHawk) -- feos, 2015-2016 --== Shortcuts ==-- rb = memory.read_u8 rw = memory.read_u16_be rws = memory.read_s16_be r24 = memory.read_u24_be rl = memory.read_u32_be box = gui.drawBox text = gui.pixelText line = gui.drawLine AND = bit.band SHIFT = bit.rshift --== RAM addresses ==-- levnum = 0xff00ba LevelFlr = 0xff00c0 LevelCon = 0xff00c4 mapline_tab = 0xff0244 GlobalBase = 0xff1c76 GolBase = 0xff2c76 MapA_Buff = 0xff4af0 --== Camera Hack ==-- camhack = false div = 1 -- scale size = 16/div -- block size --== Other stuff ==-- XposLast = 0 YposLast = 0 room = 0 workinglast = 0 lagcount = emu.lagcount() gui.defaultPixelFont("fceux") --== Block cache ==-- cache = {} function main() rnd1 = rl (0xff001c) rnd2 = rw (0xff0020) working = rb (0xff0073) xblocks = rw (0xff00d4) mapw = rw (0xff00d4)*8 maph = rw (0xff00d6)*8 Xpos = rws(0xff0106) Ypos = rws(0xff0108) camx = rws(0xff010c)+16 camy = rws(0xff010e)+16 run = rb (0xff1699) inv = rw (0xff16d2) health = rws(0xff2cc6) backx = camx backy = camy Xspd = Xpos-XposLast Yspd = Ypos-YposLast XposLast = Xpos YposLast = Ypos facing = AND(rb(GolBase+0x48),2) -- object flag 1 Background() rndlast = rnd1 workinglast = working end function Background() if working>0 then cache = {} return end local border = 0 local offset = 32 local basex = camx+border local basey = camy+border local basei = PosToIndex(basex-offset,basey-offset) local boundx = 320-border local boundy = 224-border local xblockstockeck = ((camx+boundx+offset)-(basex-offset))/16 local yblockstockeck = ((camy+boundy+offset)-(basey-offset))/16 for yblock = 0,yblockstockeck do for xblock = 0,xblockstockeck do local i = yblock*xblocks+xblock+basei local x=basex+xblock*16 local y=basey+yblock*16 if InBounds(x,basex-offset,camx+boundx+offset) then local unit = cache[i] if unit == nil or workinglast>0 then if InBounds(x,basex,camx+boundx) and InBounds(y,basey,camy+boundy) then cache[i] = GetBlock(x,y) end else if not InBounds(x,basex,camx+boundx) and not InBounds(y,basey,camy+boundy) then cache[i] = nil end end if unit ~= nil then DrawBG(unit,x,y) end elseif cache[i] ~= nil then cache[i] = nil end end end end col = 0 -- block color opout = 0x33000000 -- outer opacity opin = 0x66000000 -- inner opacity op = 0xff000000 DrawBlock = { [0x80] = function(x1,y1,x2,y2) -- WALL col = 0x00ffffff -- white line(x1,y1,x1,y2,col+op) -- left line(x2,y1,x2,y2,col+op) -- right end, [0x81] = function(x1,y1,x2,y2) -- CEILING col = 0x00ffffff -- white line(x1,y2,x2,y2,col+op) -- bottom end, [0x82] = function(x1,y1,x2,y2) -- CLIMB_U col = 0x0000ffff -- cyan line(x1,y2,x2,y2,col+op) -- bottom end, [0x83] = function(x1,y1,x2,y2) -- CLIMB_R col = 0x0000ffff -- cyan line(x1,y1,x1,y2,col+op) -- left end, [0x84] = function(x1,y1,x2,y2) -- CLIMB_L col = 0x0000ffff -- cyan line(x2,y1,x2,y2,col+op) -- right end, [0x85] = function(x1,y1,x2,y2) -- CLIMB_LR col = 0x0000ffff -- cyan line(x1,y1,x1,y2,col+op) -- left line(x2,y1,x2,y2,col+op) -- right end, [0x86] = function(x1,y1,x2,y2) -- CLIMB_R_STAND_R col = 0x00ffffff -- white line(x1,y1,x2,y1,col+op) -- top col = 0x0000ffff -- cyan line(x1,y1,x1,y2,col+op) -- left end, [0x87] = function(x1,y1,x2,y2) -- CLIMB_L_STAND_L col = 0x00ffffff -- white line(x1,y1,x2,y1,col+op) -- top col = 0x0000ffff -- cyan line(x2,y1,x2,y2,col+op) -- right end, [0x88] = function(x1,y1,x2,y2) -- CLIMB_LR_STAND_LR col = 0x00ffffff -- white line(x1,y1,x2,y1,col+op) -- top col = 0x00ff00ff -- cyan line(x1,y1,x1,y2,col+op) -- left col = 0x0000ffff -- cyan line(x2,y1,x2,y2,col+op) -- right end, [0x70] = function(x1,y1,x2,y2) -- GRAB_SWING col = 0x0000ff00 -- green box(x1,y1,x2,y2,col,col+opout) end, [0x7f] = function(x1,y1,x2,y2) -- EXIT col = 0x00ffff00 -- yellow end, [0xd0] = function(x1,y1,x2,y2) -- SPIKES col = 0x00ff0000 -- red box(x1,y1,x2,y2,col,col+opout) end, [0xd1] = function(x1,y1,x2,y2) -- SPIKES col = 0x00ff0000 -- red box(x1,y1,x2,y2,col,col+opout) end } function DrawBlockDefault(x1,y1,x2,y2)-- LEVEL_SPECIFIC col = 0x00ff8800 -- orange box(x1,y1,x2,y2,col+opin,col+opout) end function DrawBG(unit, x, y) local val = unit.block local x1 = x/div-camx/div-camx%size local x2 = x1+size-1 local y1 = y/div-camy/div-camy%size local y2 = y1+size-1 if unit.contour ~= nil then box(x1,y1,x2,y2,0x5500ff00,0x5500ff00) for pixel=0,15 do if unit.contour[pixel]>0 then gui.drawPixel( x1+pixel/div, y1+unit.contour[pixel]/div-1/div, 0xffffff00) end end end if val>0 then local Fn = DrawBlock[val] or DrawBlockDefault Fn(x1,y1,x2,y2) box(x1,y1,x2,y2,col+opin,col+opout) end end function GetBlock(x,y) if working>0 then return nil end local final = { contour={}, block=0 } if x>0 and x<mapw>0 and y<maph>0 or rb(a1+8)>0 then for pixel=0,15 do final.contour[pixel] = rb(a1+pixel) end else final.contour = nil end else return nil end return final end function PosToIndex(x,y) return math.floor(x/16)+math.floor(y/16)*xblocks end function IndexToPos(i) return { x=(i%xblocks)*16, y=math.floor(i/xblocks)*16 } end function InBounds(x,minimum,maximum) if x>=minimum and x<=maximum then return true else return false end end while true do main() emu.frameadvance() end
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Upload that one, try qp 15, 20, 25, 30, download, see theno difference
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Thank you! Fixed/committed.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
See my tests for 3D content on how different rate factors get processed by youtube. http://tasvideos.org/forum/viewtopic.php?t=18609 -qp 10 Sounds like an overkill if your res is high enough. I never checked the 2D content, but you could do it yourself if you want. tl;dr: youtube isn't going to preserve your -qp 10 even in 4K mode.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
If the content (butchering mudokons) is the same, I don't think anyone will mind it being faster.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Alyosha, look at this: Visual Nes - C++/C# port of Visual 2A03 + 2C02
Sour wrote:
For now I'm mostly interested in using this to compare execution traces with Mesen for the couple of tests it still doesn't pass and try to figure out why.
And http://forums.nesdev.com/viewtopic.php?p=186129#p186129
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
I think we should movie it to NES Games and consider tasing this game. Did he create an entirely new map, or just edited the old one in a few places?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Is that by any chance the same guy that's on WinXP and Opera 12 in 2016?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
No one is trying to improve it even further?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
The commit where it started crashing upon converting bk2 to tasproj. Build can be obtained for each commit by clicking the green checkmark and going to Artifacts: https://github.com/TASVideos/bizhawk/commits/master
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Google, GameFAQs and Circus Caper manual dont's seem to know about this trick, SDA forum doesn't even know the game, but RTA runs use it. I don't think we have a proof that it's a cheat, even if it is. And even if it is, the RTA crowd uses it, so it looks safe. EDIT: This run is also quite sloppy. Here's my 105 frame improvement of what looks like level 1. http://tasvideos.org/userfiles/info/36146295028709928 The jet controls are indeed shitty, but not shitty enough to lose so much time.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Hetfield90 wrote:
Also, when trying to convert the bk2 to a tasproj, I am getting this error, and the piano roll just has a red X over it.
Can you track down where it started (would really help)?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
You haven't read my post, have you? http://tasvideos.org/forum/viewtopic.php?p=446376#446376
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
I need a guru. Here's my script for Genesis Gargoyles that draws BG. Right now, I'm using a 1D array of "structs", with each unit representing a block with its attributes, and if the block is offscreen, its unit becomes nil, if it's onscreen, its unit gets calculated and cached. I'm also iterating through the whole map, and the array I create that way is very huge. This results in low speed of the function. This is all happening in function Background(), the rest don't seem to matter too much. Can someone help me to speed this thing up? If I make a consecutive array instead of index=x+y*mapwidth, it draws only the first bunch of blocks in the map. There's also some garbage left from camhack and size divider, ignore that. Download Gargoyles.lua
Language: lua

-- Gargoyles, Genesis (BizHawk) -- feos, 2015-2016 --== Shortcuts ==-- rb = memory.read_u8 rw = memory.read_u16_be rws = memory.read_s16_be r24 = memory.read_u24_be rl = memory.read_u32_be box = gui.drawBox text = gui.pixelText line = gui.drawLine AND = bit.band SHIFT = bit.rshift --== RAM addresses ==-- levnum = 0xff00ba LevelFlr = 0xff00c0 LevelCon = 0xff00c4 mapline_tab = 0xff0244 GlobalBase = 0xff1c76 GolBase = 0xff2c76 MapA_Buff = 0xff4af0 --== Camera Hack ==-- camhack = false div = 1 -- scale size = 16/div -- block size --== Other stuff ==-- XposLast = 0 YposLast = 0 room = 0 workinglast = 0 lagcount = emu.lagcount() gui.defaultPixelFont("fceux") --== Block cache ==-- cache = {} function main() rnd1 = rl (0xff001c) rnd2 = rw (0xff0020) working = rb (0xff0073) xblocks = rw (0xff00d4) mapw = rw (0xff00d4)*8 maph = rw (0xff00d6)*8 Xpos = rws(0xff0106) Ypos = rws(0xff0108) camx = rws(0xff010c)+16 camy = rws(0xff010e)+16 run = rb (0xff1699) inv = rw (0xff16d2) health = rws(0xff2cc6) backx = camx backy = camy Xspd = Xpos-XposLast Yspd = Ypos-YposLast XposLast = Xpos YposLast = Ypos facing = AND(rb(GolBase+0x48),2) -- object flag 1 Background() rndlast = rnd1 workinglast = working end function Background() if working>0 then return end local border = -16 local basex = camx+border local basey = camy+border local boundx = 320-border local boundy = 224-border -- xblocks = ((camx+boundx+32)-(basex-32))/16 for i = PosToIndex(basex-32,basey-32), PosToIndex((camx+boundx+32),(camy+boundy+32)) do local pos = IndexToPos(i) if InBounds(pos.x,basex-32,camx+boundx+32) then local unit = cache[i] if unit == nil or workinglast>0 then if InBounds(pos.x,basex,camx+boundx) and InBounds(pos.y,basey,camy+boundy) then cache[i] = GetBlock(pos.x,pos.y) end else if not InBounds(pos.x,basex,camx+boundx) and not InBounds(pos.y,basey,camy+boundy) then cache[i] = nil end end if unit ~= nil then DrawBG(unit, pos) end elseif cache[i] ~= nil then cache[i] = nil end end end function DrawBG(unit, pos) local val = unit.block local x1 = pos.x/div-camx/div local x2 = x1+size-1 local y1 = pos.y/div-camy/div local y2 = y1+size-1 local col = 0 -- block color local opout = 0x33000000 -- outer opacity local opin = 0x66000000 -- inner opacity local op = 0xff000000 if unit.contour ~= nil then box(x1,y1,x2,y2,0x5500ff00,0x5500ff00) for pixel=0,15 do if unit.contour[pixel]>0 then gui.drawPixel( x1+pixel/div, y1+unit.contour[pixel]/div-1/div, 0xffffff00) end end end if val>0 then if val==0x80 then -- WALL col = 0x00ffffff -- white line(x1,y1,x1,y2,col+op) -- left line(x2,y1,x2,y2,col+op) -- right elseif val==0x81 then -- CEILING col = 0x00ffffff -- white line(x1,y2,x2,y2,col+op) -- bottom elseif val==0x82 then -- CLIMB_U col = 0x0000ffff -- cyan line(x1,y2,x2,y2,col+op) -- bottom elseif val==0x83 then -- CLIMB_R col = 0x0000ffff -- cyan line(x1,y1,x1,y2,col+op) -- left elseif val==0x84 then -- CLIMB_L col = 0x0000ffff -- cyan line(x2,y1,x2,y2,col+op) -- right elseif val==0x85 then -- CLIMB_LR col = 0x0000ffff -- cyan line(x1,y1,x1,y2,col+op) -- left line(x2,y1,x2,y2,col+op) -- right elseif val==0x86 then -- CLIMB_R_STAND_R col = 0x00ffffff -- white line(x1,y1,x2,y1,col+op) -- top col = 0x0000ffff -- cyan line(x1,y1,x1,y2,col+op) -- left elseif val==0x87 then -- CLIMB_L_STAND_L col = 0x00ffffff -- white line(x1,y1,x2,y1,col+op) -- top col = 0x0000ffff -- cyan line(x2,y1,x2,y2,col+op) -- right elseif val==0x87 then -- CLIMB_LR_STAND_LR col = 0x00ffffff -- white line(x1,y1,x2,y1,col+op) -- top col = 0x00ff00ff -- cyan line(x1,y1,x1,y2,col+op) -- left col = 0x0000ffff -- cyan line(x2,y1,x2,y2,col+op) -- right elseif val==0x70 then -- GRAB_SWING col = 0x0000ff00 -- green box(x1,y1,x2,y2,col,col+opout) elseif val==0x7f then -- EXIT col = 0x00ffff00 -- yellow elseif val==0xd0 or val==0xd1 then -- SPIKES col = 0x00ff0000 -- red box(x1,y1,x2,y2,col,col+opout) else -- LEVEL_SPECIFIC col = 0x00ff8800 -- orange box(x1,y1,x2,y2,col+opin,col+opout) end box(x1,y1,x2,y2,col+opin,col+opout) end end function GetBlock(x,y) if working>0 then return nil end local final = { contour={}, block=0 } if x>0 and x<mapw and y>0 and y<maph then local x1 = x/div-camx/div local x2 = x1+size-1 local y1 = y/div-camy/div local y2 = y1+size-1 local d4 = rw(mapline_tab+SHIFT(y,4)*2) local a1 = r24(LevelFlr+1) local d1 = SHIFT(rw(MapA_Buff+d4+SHIFT(x,4)*2),1) final.block = rb(a1+d1+2) d1 = rw(a1+d1) a1 = r24(LevelCon+1)+d1 if rb(a1)>0 or rb(a1+8)>0 then for pixel=0,15 do final.contour[pixel] = rb(a1+pixel) end else final.contour = nil end else return nil end return final end function PosToIndex(x,y) return math.floor(x/16)+math.floor(y/16)*xblocks end function IndexToPos(i) return { x=(i%xblocks)*16, y=math.floor(i/xblocks)*16 } end function InBounds(x,minimum,maximum) if x>=minimum and x<=maximum then return true else return false end end while true do main() emu.frameadvance() end
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1241)
Joined: 4/17/2010
Posts: 11325
Location: RU
Alyosha wrote:
In the latest dev build copying/cutting cells isn't working for me and when I do that it just leaves the clipboard empty and pasting doesn't do anything.
I'm not using internal clipboard anymore, which was done to allow cross-instance copy-pasting. I'm not sure if we need that status bar report, but if you want, I can set it up again. Cut/copy/paste works fine for me.
jlun2 wrote:
Scroll bars seems to appear again, but for GBC core, whenever I misclick and click on this region next to "A" in the interim I get : http://imgur.com/a/guHiw
Forgot about it. Fixed now.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
1 2 193 194 195 441 442