;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL

Topo

Super Nintendo completa 28 anos; lembre 10 jogos inesquecíveis

O Super Nintendo foi um dos principais consoles da década de 90! - Reprodução
O Super Nintendo foi um dos principais consoles da década de 90! Imagem: Reprodução

Do GameHall

21/11/2018 15h56

No dia 21 de novembro de 1990, há exatos 28 anos, os japoneses colocavam as mãos no Super Famicom, que foi batizado, no ocidente, de Super Nintendo Entertainment System - SNES para os íntimos. O aparelho, muito aguardado pelo público oriental após o enorme sucesso do Nintendinho (NES), chegou ao mercado apenas com dois títulos, mas que se tornaram grandes clássicos do sistema: “Super Mario World” e “F-Zero”.

Apesar do sucesso no Japão, seu lançamento nos Estados Unidos demorou quase um ano, o que teve um alto custo à Nintendo: a ascensão da Sega e o seu Mega Drive, mais conhecido no mercado norte-americano pelo nome de Genesis.

VEJA TAMBÉM

Com dois anos de desvantagem, o SNES encontrou um forte adversário na terra do Tio Sam, que já contava com uma base sólida de fãs e jogadores. O SNES demorou um pouco para cair no gosto dos americanos, devido a uma forte e agressiva campanha de marketing da Sega of America. Eventualmente a Nintendo conseguiu alcançar a rival e, então, teve início, durante a metade da década de 90, a primeira "guerra" dos videogames, com a divisão da preferência dos jogadores.

Essa guerra estendeu seus campos de batalhas aqui no Brasil, que tinha seu o mercado dominado pela Tectoy e seus videogames Master System e Mega Drive. O SNES marcou a chegada oficial da Nintendo no Brasil em 1993, por meio da empresa Playtronic, criada em parceria entre a Gradiente e a Estrela.

Foi graças a essa intensa batalha que os jogadores de ambas as plataformas ganharam jogos inesquecíveis, uma sempre tentando superar a outra.

E para comemorar os 28 anos do querido SNES, que foi berço de inúmeros games grandiosos, nada melhor do que relembrar de 10 de seus clássicos. Infelizmente muitos títulos bons ficaram de fora da lista, mas você pode falar deles nos comentários!